0
#include <iostream>

using namespace std;

int main(){
    char name;
    char city;

    cout << "Please enter your name" << endl
    cin >> name;
    cout << "Please enter your city name" << endl
    cin >> city;

    cout << "Your name is  " << name << "and live in" << city << endl

    return 0;
}

何かが足りないのかどうかわかりませんが、「cin >> name;」という行にエラーが表示されます。どうすれば修正できますか?

4

2 に答える 2

4

2 つの問題: Acharは 1 文字しか保持できないため、 を使用する必要がありstd::string、行末にセミコロンがありません。

// Here
cout << "Please enter your name" << endl
// Here
cout << "Please enter your city name" << endl
// And here
cout << "Your name is  " << name << "and live in" << city << endl

現在のステートメントを終了しようとしていることをコンパイラーが認識するために、セミコロンが必要です。これは主にあいまいさを取り除くためのもので、次のようなことが可能になります。

x = some_routine(boost::some_very_long_function_name0<type>(some_args0),
                 boost::some_very_long_function_name1<type>(some_args1),
                 boost::some_very_long_function_name2<type>(some_args2));
//                                     Terminates the current statement ^

このように、非常に長い行を処理する必要はありません。それはWin-Winです。


最後に 1 つ:cin >> nameはスペースに達すると終了するため、 のような名前"Mohammad Ali"は として読み取られ"Mohammad"ます。複数の単語が許容されるこの特定の目的では、 std::getline(cin, str)where stris anを使用する必要がありstd::stringます。これにより、 に到達すると文字列が終了します'\n'

(std::getline独自の区切り文字を選択するために 3 番目の引数を指定することもできます: 。これにより、文字std::getline(cin, str, '\t')にヒットすると終了します。デフォルトでは、3 番目のパラメーター/引数があります。)'\t'std::getlinechar'\n'

于 2013-05-25T12:18:27.547 に答える
1

文字変数には、単一の文字のみを含めることができます。のようにchar a='x';

C++ で文字列を格納する場合は、

const char * a = "name";

また

string a="name";
于 2013-05-25T12:17:40.460 に答える