我正在通过输入接收数据
string input,word;
while(getline(cin, input)) {
stringstream ss;
ss<<input
while(ss >> word)
...
我想打印我需要的内容,使用
cout <<word<<" ";
。然而,这样做会在每行末尾创建一个额外的空格,我不希望出现这种情况。如果我不加空格,那么打印出来的单词之间就没有空格了。有没有更简单的方法可以让我自动添加空格?有哪些方法可以防止每行末尾的额外空格?我正在通过输入接收数据
string input,word;
while(getline(cin, input)) {
stringstream ss;
ss<<input
while(ss >> word)
...
cout <<word<<" ";
。然而,这样做会在每行末尾创建一个额外的空格,我不希望出现这种情况。如果我不加空格,那么打印出来的单词之间就没有空格了。有没有更简单的方法可以让我自动添加空格?有哪些方法可以防止每行末尾的额外空格?在循环外测试第一个单词的提取,然后继续带有前导空格的循环:
std::string input;
while(getline(std::cin, input))
{
std::istringstream ss(input);
std::string word;
if (ss >> word)
{
std::cout << word;
while (ss >> word)
std::cout << ' ' << word;
std::cout << '\n';
}
}
将问题反过来考虑。不是在单词后添加空格,而是找出何时应在单词前添加空格。
我的做法是将前缀分隔符初始化为空值,然后在第一个元素之后将其设置为有效值。在你的情况下,应该像这样:
const char *delimiter= "";
while(ss >> word)
{
ss >> delimiter >> word;
delimiter= " ";
}
bool space = false;
while (ss >> word) {
if (space) {
cout << " ";
} else {
space = true;
}
cout << word;
}
while(ss >> word)
,并且在读取输入时不应有任何区别... - coyotte508