1

誰かが私の完全な住所を印刷しない理由を教えてもらえますか? 最終的な出力は、「あなたの名前はシドで、2845 に住んでいます。」なぜこれを行うのですか?アドレス文字列を印刷するために、c 内で明確に述べます。(ちなみに、実際には2845 SE Taylor Streetと入力しています)

#include <iostream>
using namespace std;

int main()
{
    string address;
    cout << "Please enter your address." << endl;
    cin >> address;
    cout << "You live at " << address << "." << endl;
    return 0;
}
4

2 に答える 2

4
cin >> address;

これは単一の単語を読み取り、最初の空白文字で停止します。行全体を読み取るには:

std::getline(cin, address);
于 2013-10-18T14:36:08.180 に答える
2

入力演算子は、スペースで区切られた値を読み取ります。したがって、住所にスペースが含まれている場合、最初の「単語」だけが読み取られます。

さらに悪いことに、フルネームを入力すると、最初の入力で名前が読み取られ、2 番目の入力で 2 番目の名前が読み取られます。

std::getlineを使用して行全体を読み取ろうとしますが、最初std::cin.ignore(numeric_limits<streamsize>::max(),'\n');に最後の入力から改行をスキップします (またはstd::getline両方の入力に使用します)。

于 2013-10-18T14:35:55.500 に答える