如果用户输入字符串,则从用户读取\ n和EOF?

时间:2014-01-25 21:22:57

标签: c++

我想检查用户是否在他们输入的字符串中输入\ n和EOF。到目前为止,我已经尝试了

getline(cin, temp);
if(cin.EOF())//tried and did not work
  cout << "failed EOF";
if(temp[temp.size()] == '\n')
  cout << "\n";

1 个答案:

答案 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.";
    }
}

上面只是一个例子。我没有尝试编译它。 :)