2

ユーザーが 5 文字を超えて入力すると、残りをスキップするのではなく、何かが起こるようにしたいのです。

このコードでは、5 文字を超えて入力すると、最初の 5 文字のみが表示されます。ユーザーが 5 文字を超える文字を入力すると、最初の 5 文字だけでなく、エラーか何かが表示されるという "if" ステートメントをここに入れたいと思います。

#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ユーザー入力の待機を開始する前に、プロンプトが画面にフラッシュされることを確認する必要があります。(編集: ロキ アスタリがコメントで指摘しているように、この部分は実際には必要ありません。)

于 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 に答える