cin — Как вы ограничиваете максимальное количество символов в пользовательском вводе в C ++?

Я хочу, чтобы, когда пользователь вводил более 5 символов, что-то происходило, а не просто пропускало остальные.

В этом коде, если вы введете более 5 символов, будут показаны только первые 5 символов.
Я хочу поместить здесь выражение «если», что, если пользователь вводит более 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

Решение

Вы можете сначала прочитать строку целиком, а затем проверить ее:

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; Вы хотите убедиться, что подсказка сбрасывается на экран, прежде чем вы начнете ждать ввода пользователя. (Правка: как указывает Локи Астари в комментариях, эта часть на самом деле не нужна.)

3

Другие решения

**

#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;
}

**

Вы можете использовать этот код. Это работает отлично без каких-либо ошибок. Также вы можете преобразовать это в минимальный ввод символов, сделав несколько изменений.

0

По вопросам рекламы [email protected]