Я хочу, чтобы, когда пользователь вводил более 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;
}
Спасибо!
Вы можете сначала прочитать строку целиком, а затем проверить ее:
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
; Вы хотите убедиться, что подсказка сбрасывается на экран, прежде чем вы начнете ждать ввода пользователя. (Правка: как указывает Локи Астари в комментариях, эта часть на самом деле не нужна.)
**
#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;
}
**
Вы можете использовать этот код. Это работает отлично без каких-либо ошибок. Также вы можете преобразовать это в минимальный ввод символов, сделав несколько изменений.