C++ While循环错误c++;

C++ While循环错误c++;,c++,loops,visual-c++,while-loop,C++,Loops,Visual C++,While Loop,我有一个while循环,在输入位置或文件名之前抛出异常。代码如下: find.cpp 而不是 enter file name or location> 您几乎肯定忽略了有趣的代码:输入文件名之前发生了什么!可能之前有一些格式化输入(即,使用std::cin>>值),例如,读取一个数字:格式化输入在与格式不匹配的第一个字符处停止。例如,它在使用enter键输入值时遇到的换行处停止 要解决此问题,您可能应该去掉前导空格,例如,使用std::ws操纵器: while (std::g

我有一个while循环,在输入位置或文件名之前抛出异常。代码如下:

find.cpp 而不是

      enter file name or location>

您几乎肯定忽略了有趣的代码:输入文件名之前发生了什么!可能之前有一些格式化输入(即,使用
std::cin>>值
),例如,读取一个数字:格式化输入在与格式不匹配的第一个字符处停止。例如,它在使用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)) {
    ...
}
std::cin.ignore(std::numeric_limits::max(),'\n');
while(std::getline(std::cin,thefilename)){
...
}

您几乎肯定忽略了一段有趣的代码:输入文件名之前发生了什么!可能之前有一些格式化输入(即,使用
std::cin>>值
),例如,读取一个数字:格式化输入在与格式不匹配的第一个字符处停止。例如,它在使用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)) {
    ...
}
std::cin.ignore(std::numeric_limits::max(),'\n');
while(std::getline(std::cin,thefilename)){
...
}

这不是问题所在,但您不需要
您的格式很混乱。按照它的编写方式,您可能会得到意外的结果。是的,它位于同一目录中。文件正确打开,但在输入文件名或位置之前第一次运行时显示无效文件。您打开的文件代码在我的机器上运行良好。当我打开时,尽管有标题,但此代码不会引发异常。这不是问题,但您不需要
您的格式混乱。按照它的编写方式,您可能会得到意外的结果。是的,它位于同一目录中。文件正确打开,但在输入文件名或位置之前第一次运行时显示无效文件。您打开的文件代码在我的机器上运行良好。当我打开文件时,尽管有标题,但此代码不会引发异常。