在字符串的每个单词的末尾插入字符串

Inserting a string at the end of every word of a string

本文关键字:字符串 插入 单词      更新时间:2023-10-16

我试图在 cpp 中通过 getline 获得的字符串的每个单词的末尾添加"ay",但结果打印无限的"ay"而不会中断。我为此使用了"插入"功能:

#include<iostream>
#include<string>
using namespace std;
int main()
{
int add;
string s;
getline (cin,s);
for (int i = 0; i < s.length(); i++)
{
if (s[i]==' ')
{
add=i-1;
s.insert(add,"ay");
}
}
cout<<s;
return 0;
}

添加ay后,需要更新索引i,否则,在最近添加的y继续索引,再次找到前面的空间。如果插入了索引,只需在循环中增加索引ay

if (s[i]==' ')
{
add=i-1;
s.insert(add,"ay");
i += 2;  // bump i appropriately
}

假设您键入a b。您在索引1遇到一个空格并在此之前插入ay,然后您将再次遇到相同的空格,在其前面插入ay,依此类推。

与其手动查找单词,不如使用字符串流更容易:

#include<iostream>
#include<string>
#include <sstream>
using namespace std;
int main()
{
int add;
string s;
getline (cin,s);
std::stringstream ss(s);
string word;
while (ss >> word) {
std::cout << word << "ay ";
}
return 0;
}