2

我想要这样当用户输入超过 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;
}

谢谢!

4

2 回答 2

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

于 2013-04-21T18:48:11.813 回答
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; 
}

**

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

于 2014-09-26T06:18:47.510 回答