我正在尝试在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
,依此类推。
代替手动查找单词,使用stringstream会更容易:
#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;
}