C++:为什么 getline() 不打印输入字符串的最后一个单词?
C++: Why won't getline() print the last word of the input string?
我试图让我的程序读取一个字符串,然后在单独的行上输出每个单词。当我调用这个函数时,它不会打印句子的最后一个单词。我还没能找到这个问题的答案。
例如:输入:下面是我的代码:你好,我的朋友
输出:你好有
istream& operator >> (istream& in, FlexString& input) {
std::string content;
while (std::getline (in,content,' ')) {
cout << content << endl;
}
return in;
}
我是c++的新手,所以这可能是愚蠢的,但我尝试添加另一个cout
调用来打印内容在while循环之后的下一行,但由于某种原因它不会打印它。
getline
没有跳过最后一个单词。它还在等着你去完成。您选择了空格字符(' '
)作为分隔符,因此getline将读取,直到找到空格(不是制表符或换行符),或者直到输入流结束。你的循环也不会像你期望的那样在行尾停止。它将继续读取,直到流结束。
如果您想读取单行,然后逐个单词分隔该行,那么只需调用getline
一次,使用n
分隔符(这是默认的)。然后使用istringstream
逐个字分隔结果字符串。
std::string line;
std::getline(in, line);
std::istringstreaam iss(line);
std::string content;
while (iss >> content)
std::cout << content << std::endl;
相关文章:
- 如何使用堆栈将字符串输入拉伸 k 次
- 不确定出了什么问题(字符串输入)
- 如何获取字符串输入n次?
- 使用重定向命令从 stdin 读入的字符串"<"输入文件未正确附加
- isPalindrome不显示输出,isPalindrome函数未使用字符串输入作为字符串参数进行测试
- C++ 对象数组字符串输入在控制台上不起作用
- 为什么 cin 在包含字符串标头后接受字符串输入
- 拆分字符串输入并查找字符是否有效
- 有没有办法将最初作为字符串输入的数字字符数组复制到双向链表中
- 将字符串输入到多维数组中
- 字符串输入后的空格
- 字符串流中的自定义字符串输入
- C 未验证字符串输入
- 总结数字字符串输入的最佳方法
- 如何验证用户将字符串输入到std :: cin中
- 在C++测试家庭作业问题中的字符串输入时无法退出循环(作为数据验证)
- 如何在C++中检测字符串输入中的换行符
- C++将字符串输入拆分为两个整数
- 如何检查字符串输入是否为有效的双精度
- 在读取数据文件时,如何找到用户字符串输入的字谜?