1

このような数字の文字列を取得します。

12 45

スペースで区切られた 2 つの整数。

出力は 57 になります。

使ってみましたが、

string numbersstream;
cin >> numbersstream;
istringstram twonumbers (numbersstream);
twonumbers >> a >> b;

しかし、実行するたびに、a だけが正しく、b は正しくありません。

他にどのような機能がありますか? それとも、これは私が抱えているコーディングの問題ですか?

回答にはすでに2種類の提案があります。

getline(cin,numbersstream);

cin << a << b;

ありがとうございました。追加の方法は非常に高く評価されます。

4

3 に答える 3

4

問題は、cin からの入力にあります。使用operator>>は空白で区切られます。したがって、ユーザーが「12 45」と入力すると、12 のみが抽出されます。代わりに getline を使用できます。

getline(cin,numbersstream);
于 2011-09-10T04:54:06.247 に答える
1

これを試して:

int main()
{
    int a;
    int b;

    std::cin >> a >> b;
    std::cout << a+b << "\n";
}

問題は、あなたのコードにあることです:

cin >> numbersstream;

スペースで区切られた 1 つの単語 (つまり 12) のみを string に読み込みますnumbersstream。したがって、ビルドするtwonumbersと、実際には数字が 1 つしかありません。したがって、「a」のみを設定し、「b」は未定義のままです。

あなたのやり方でそれを行うことができますが、ここで本当に必要なのは、行全体を文字列に読み込むことです:

std::getline(std::cin, numbersstream);
istringstram twonumbers (numbersstream);
于 2011-09-10T04:55:33.750 に答える
1

最初の空白文字までしか読んでいません

cin >> numberstream;

以下は、区切り文字が読み取られる ('\n') またはファイルの終わりになるまで、すべてを文字列に読み取ります。区切り文字は破棄されます。

getline(cin,numbersstream);
于 2011-09-10T04:56:27.090 に答える