对于wcin中包含的相同数量的无效字符,会重复Failcheck消息



我目前正在重新开始编程,并从一个简单的二阶方程式计算器开始。我得到了一个意想不到的行为,我不知道为什么会发生。我有一段时间检查a、b和c的值是否是数字,如果不是,则显示失败消息。但是失败消息会在不可接受的输入中重复相同数量的无效字符。

这是代码:

wcout << "Insert a value for a: n";
wcin >> a;
while (wcin.fail())
{
wcin.clear();
wcin.ignore();
wcout << L"Please insert a numerical value.n";
wcin >> a;
}

所描述问题的示例。如果有人知道发生了什么,我会感谢的帮助

编辑:我使用wcout和wcin是因为UNICODE字符,比如带有重音符号和希腊符号的字母。我不知道这个问题是否与此有关,但我经常收到错误,说"wcin/wcout不明确">

虽然wcin.clear()只设置流错误状态标志,但必须重置输入流,例如通过wcin.ignore(...)

如果使用wcin.ignore(),它将使用默认参数(请参阅此处(:一个字符或文件结尾条件。

输入"aaa"只会提取一个"a",其余部分保留在输入中,将在下一个while循环中再次测试。

从控制台输入通常意味着"Enter"键,其字符为'n'。这是我们需要用来重置输入的分隔符:

wcin.ignore(100, 'n');

注意我已经写了100。如果你想丢弃任意数量的字符,那么你需要:

#include <limits>
....
wcin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');

相关内容

  • 没有找到相关文章

最新更新