我需要从标准输入读行,但我真的不知道,它将是多少。我尝试使用getline()和cin与while循环相结合来完成这个任务,但是它导致了一个无限循环:
string line;
while( getline(cin, string) ){...}或
string word;
while( cin >> word ){...}它不会停在输入的末尾(行是一次出现的,所以用户只按了一次Enter键)。
谢谢你的帮助。
发布于 2014-11-13 10:50:22
您的问题是从控制台读取。
因为您的控制台在输入空行时不放置EOF(文件结束)。
您应该尝试将输入从一个文件转到您的程序。当没有更多的输入时,这应该结束。
否则,只需检查字符串是否为空,并脱离循环,如果为空。
发布于 2014-11-13 10:55:25
您运行程序的方式,您的输入并没有结束,因为控制台总是可以提供更多的输入。您的程序的行为是正确的,虽然可能不是您想要的方式。那是因为你误解了自己的欲望。
您要寻找的可能是(但我不能确定)程序在输入结束或输入包含空行时结束。这可以按以下方式编码:
int main()
{
for (std::string line; std::getline(std::cin, line); )
{
if (line.empty())
{
std::cout << "Got blank line, quitting.\n";
return 0;
}
// process line
}
std::cout << "End of input, quitting.\n";
return 0;
}https://stackoverflow.com/questions/26906985
复制相似问题