1

問題は、C++ では、ユーザーから数値を取得し、すべての int をベクトルに入れたいということです。そこで、次のコードを書きます。

#include <iostream>
#include <vector>
using namespace std;

vector<int> readVals()
{
    vector<int> read;
    int temp;
    cin >> temp;
    while (!cin.fail() && !cin.eof())
        {
            read.push_back(temp);
            cin >> temp;
        }
    return read;
}

void printVals(vector<int> v)
{
    if(v.size() >= 1)
        {
            for (vector<int>::size_type i = 0; i < v.size()-1; i++ )
        {
            cout << v[i] << " ";
            cout << v[v.size()-1] << "\n";
        }
    }
}

int main()
{
    vector<int> a = readVals();
    printVals(a);
    return 0;
}

次に、それをコンパイルして a.out ファイルを作成します。にいくつかの数字がありin1ます。そして、次のコマンドを実行すると、a.out < in1必要なものが得られました。しかし、ユーザーがデータを入力できるようにすると、私は混乱します。ユーザーはいくつかの数字を入力し、 を押しEnterて数字を渡すことができます。しかし、私は を使用getline()しましたが、失敗しました。!="\n"、 失敗した。を押すたびにEnter、プログラムはまだ数字を待っていて、結果を出力していないようです。誰もがそれを成功させるのを手伝ってくれますか? ありがとうございました!

4

1 に答える 1

4

ループは、cin が「失敗」状態になるか、ファイルの終わりになるのを待っています。Enter キーを押してもどちらも実行されません。Windows では CTRL-Z を、unix/mac では CTRL-D を押すと、入力を終了できます。これらは、「ファイルの終わり」文字を cin に送信します。または、ループ条件を変更して、特定の入力を「リッスン」します。

于 2012-11-16T03:42:20.963 に答える