gpt4 book ai didi

c++ - 从使用 sstream 读取的单词中删除最后一个空格的最佳方法?

转载 作者:行者123 更新时间:2023-11-30 05:42:30 44 4
gpt4 key购买 nike

因此,我的代码应该打乱句子中的单词而不改变它们在输入中出现的顺序。代码工作正常,但在输出的末尾有一个空格导致显示错误。

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main() {
string line;
while(getline(cin,line)){
stringstream ss(line);
string word;
while(ss>>word){
string sWord;
for(int i=word.length()-1;i>=0;i--) {
sWord+=word.at(i);
}
cout << sWord << " ";
}
cout << endl;
}
}

这是由 cout << sWord << " "; 引起的无论单词的位置如何都打印一个空格的行。我试图将那部分代码重写为:

cout << sWord;
if(ss>>word) cout << " "; // if there is a following word, print the space; else don't

但是因为我正在写 ss>>word同样,当下一次迭代开始时,它从第 3 个单词(或第 5 个、第 7 个等)开始,跳过我不打算跳过的内容。

有没有一种简单的方法可以实现这一点?

提前致谢!

最佳答案

您可以使用 bool测试您是否显示第一个单词,例如:

bool is_first = true; // bool flag to test whether first word or not 
while(ss>>word){
string sWord;
for(int i=word.length()-1;i>=0;i--) {
sWord+=word.at(i);
}
if(is_first){ // first word
cout << sWord;
is_first = false;
}
else{ // not first word
cout << " " << sWord;
}
}

通过这种方式,您可以有效地打印 " " << sWord;在每次迭代中,除了第一次迭代,您不输出空格。

关于c++ - 从使用 sstream 读取的单词中删除最后一个空格的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30611643/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com