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

时间:2013-04-21 18:41:56

标签: 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;
}

谢谢!

2 个答案:

答案 0 :(得分:3)

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

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在评论中指出的那样,这部分实际上并不是必需的。)

答案 1 :(得分:0)

**

#include <iostream>
#include <iomanip>
#include<string>
#include <conio.h>
int main() {
    using namespace std;
    const int maxchar = 6;
    string nationname;
    cout << "What is the name of your nation?" << endl;
    getline(cin, nationname);
    if (nationname.size() > maxchar)
    {
       cout << "The input is too Short." << endl;
    }   getch(); 
    return 0; 
}

**

您可以使用此代码。这是完美的,没有任何错误。此外,您可以将其转换为最小字符输入进行少量更改。