c++ - 验证取自 std::cin 的 char * 的长度

标签 c++ validation pointers iostream

我有一个名为 char * panimal_name 的指针。这个指针应该只能接受20个字符,如果用户输入更多,它必须要求用户重新输入。

我已经尝试计算流中的字符数并使用 strlen(),但我仍然遇到问题。

cout << "Enter Animal Name: ";
cin.ignore();
cin.getline(panimal_name, 20);

如有任何帮助,我们将不胜感激。

编辑:好吧,我只希望它从用户那里获取最多 20 个字符。如果超过 20,则应要求用户重新输入有效输入。但是,在此设置中,它现在弄乱了我下一个输入的流。我使用它而不是 std::string 的原因是我现在正在学习指针。

附言我知道在这种情况下使用字符串可能会更好,以便于使用。

最佳答案

根据 MSDN:

If the function extracts no elements or _Count - 1 elements, it calls setstate(failbit)...

您可以检查该故障位以查看用户输入的数据是否超过了缓冲区允许的数量?

关于c++ - 验证取自 std::cin 的 char * 的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9381979/

相关文章:

c++ - Qt qmake 和 DISTFILES

c++ - 如何在 C++ 中递增 Date 对象

validation - 为什么 W3C RDF 验证器将 RDF URI 替换为自己的?

C++ Visual Studio 2010,实现动态堆栈时编译错误 C3867

c - 如何在 C 中通过引用将结构数组传递给函数?

c++ - C++ lambda 的返回类型

php - 为什么我的返回不起作用?

java - 带有 BindingResult 属性的 Spring Validation 永远不会命中目标 Controller 方法

python - 测试两个对象是否相同而不仅仅是相等的Pythonic方法是什么

c++ - "Cannot open include file"当实现使用 CMake 实现 GLM 的库时