我想检查用户是否在他们输入的字符串中输入\ n和EOF。到目前为止,我已经尝试了
getline(cin, temp);
if(cin.EOF())//tried and did not work
cout << "failed EOF";
if(temp[temp.size()] == '\n')
cout << "\n";
答案 0 :(得分:0)
确定有效提取比您想象的更直接。如果提取失败,它将通过用于提取的输入流的流状态反映在程序中。此外,std::getline()
返回流,(当隐式转换为布尔值时)将检查其流状态以获取适当的位。您可以利用此功能并将提取包含在if
语句中,该语句将隐式地将其参数转换为布尔值:
if (std::getline(std::cin, temp))
如果提取成功,则会执行if
语句。如果要通过流状态响应用户,可以在流中设置例外掩码并检查任何抛出的异常:
if (std::getline(std::cin, temp)) { std::cout << "Extraction produced: " << temp << std::endl; } try { std::cin.exceptions(std::ios_base::failbit | std::ios_base::eofbit); } catch (std::ios_base::failure&) { std::ios_base::iostate exceptions = std::cin.exceptions(); if ((exceptions & std::ios_base::eofbit) && std::cin.eof()) { std::cout << "You've reached the end of the stream."; } }
上面只是一个例子。我没有尝试编译它。 :)子>