【发布时间】:2014-07-13 10:13:55
【问题描述】:
当我在测试用例的输入中遇到一个奇怪的问题时,我正在尝试测试我的类。 我试图简化输入以查看出了什么问题,因此我创建了下面的程序。
#include <iostream>
#include <string>
int main()
{
std::string number;
while (std::getline(std::cin, number))
{
std::cout << std::string(number) << " ";
}
}
基本上,我获取每一行文本并使用 getline() 将其存储在字符串变量中。然后我使用 std::cout 显示每个字符串并附加一个空格字符。
我的输入文件包含以下内容:
one six
one seven
预期的输出应该是这样的:
one six one seven
但是,我得到了这个:
one seven
这是一个空格字符,后跟输入的第二行。它忽略输入的第一行。我知道每一行都被正确读取,因为当我用这个替换代码时它们被正确显示:
std::cout << std::string(number) << std::endl;
这个错误对我来说很新鲜。这里发生了什么事?谁能解释一下?蒂亚!
【问题讨论】:
-
尝试:std::cout
-
这很奇怪。所有
std::endl的不同之处在于刷新输出。您是否尝试将cout.flush()添加到循环中? -
我无法用 g++ 或 msvc2013 重现您的问题。我知道你不需要在那些
cout电话中说std::string(number)。您正在无缘无故地创建临时副本。就做std::cout << number << ... -
请注意,输入来自文本文件,我在命令行中运行程序:./main
-
@dari 我试过了,结果一样。
标签: c++ string standards std cout