c++ - 如何限制 C++ 中用户输入的最大字符数?

标签 c++ cin iomanip setw

我希望当用户输入超过 5 个字符时,会发生一些事情,而不是跳过其余的。

在此代码中,如果输入超过 5 个字符,则仅显示前 5 个字符。 我想在这里放一个“if”语句,如果用户输入超过5个字符,它会显示错误或其他内容,而不仅仅是显示前5个字符。

#include <iostream>
#include <iomanip>

int main()
{
using namespace std;
string nationname;
int maxchar = 5;
cout << "What is the name of your nation?\n";

cin >> setw(maxchar) >> nationname;

cout << "The name of your nation is " << nationname;
cin.ignore();

return 0;
}

谢谢!

最佳答案

您可以先读取整个字符串,然后验证它:

int main()
{
    using namespace std;

    const int maxchar = 5;
    string nationname;

    cout << "What is the name of your nation?" << endl;

    cin >> nationname;

    if (nationname.size() > maxchar)
    {
       err << "The input is too long." << endl;
       return 1;
    }

    // ...
}

顺便说一句,您应该在提示符中使用 std::endl 而不仅仅是 \n;您需要确保在开始等待用户输入之前提示已刷新到屏幕上。 (编辑:正如 Loki Astari 在评论中指出的那样,这部分实际上并不是必要的。)

关于c++ - 如何限制 C++ 中用户输入的最大字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134822/

相关文章:

c++ - 用 setw 截断

C++:setw()仅在循环中的第一行上工作

c++ - 如何获取 cin 中的第一个非白色字符

c++ - 当使用 getline(cin, string) 时,cin 会自动获取它的值而无需询问

c++ - C++ iomanip 库的有效使用

c++ - STL 迭代器循环

c++ - 如何使用 BOOST BinaryFunction 概念?

c++ - 模板特化的不正确实例化

c++ - 尝试对随机 [1-100 000] 长度的 vector 进行子矢量化

c++ - std::cin 是否无法将命令行中的用户输入传递给类型为 char 的变量?