Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我有一个while循环,在输入位置或文件名之前会引发异常。这是代码:
find.cpp
当我运行这个我得到
代替
另外,您可能想在前面的输入之后
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我有一个while循环,在输入位置或文件名之前会引发异常。这是代码:
find.cpp
cout << "enter file name or location> " << flush;
while (true)
{
string thefilename;
getline( cin, thefilename );
thefile.open( thefilename.c_str() );
if (thefile) break;
cout << "Invalid file. Please enter file name or location> " << flush;
}
while(getline(thefile, temp))
cout << temp << endl;
thefile.clear();
thefile.open("blabla.txt");
cout << endl;
thefile.close();
system("pause");
return 0;
}
当我运行这个我得到
enter file name or location>Invalid file. Please enter file name or location>
代替
enter file name or location>
最佳答案
您几乎可以肯定地忽略了有趣的代码:在输入文件名之前发生了什么!可能在它之前是一些格式化的输入(即使用std::cin >> value
),例如读取数字:格式化的输入停留在与格式不匹配的第一个字符处。例如,它停止在遇到由于使用Enter键输入值而导致的换行符的情况。
要解决此问题,您可能应该摆脱领先的空格,例如,使用std::ws
操纵器:
while (std::getline(std::cin >> std::ws, thefilename)) {
...
}
另外,您可能想在前面的输入之后
ignore()
直到换行符为止的所有内容:std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
while (std::getline(std::cin, thefilename)) {
...
}
关于c++ - While循环错误C++ ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20460799/
10-13 08:26