在C ++中,在字符串的每个单词的末尾插入一个字符串

问题描述 投票:0回答:2

我正在尝试在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;
}
c++ string insert
2个回答
2
投票

添加ay后,需要更新索引i,否则,请在最近添加的y处继续索引,并再次找到上一个空格。如果插入了ay,只需在循环中增加索引:

if (s[i]==' ')
        {
            add=i-1;

            s.insert(add,"ay");

            i += 2;  // bump i appropriately
        }

0
投票

假设您键入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;
}
© www.soinside.com 2019 - 2024. All rights reserved.