私が好きなパターンは次のとおりです。
while (!cin.eof())
{
string line;
getline(cin, line);
if (cin.fail())
{
//error
break;
}
cout << line << endl;
}
他の回答と同様に、入力してtoCTRL+Z
を送信できます。がパイプの場合、ストリームにデータがなくなったときに送信されます。EOF
STDIN
STDIN
EOF
ベクトルに保存するには:
vector<int> numbers;
while (!cin.eof())
{
string line;
getline(cin, line);
if (cin.fail())
{
//error
break;
}
cout << line << endl;
istringstream iss(line);
int num;
iss >> num;
numbers.push_back(num);
}
Cスタイルの配列が必要な場合(ただし、お勧めしstd::vector
ます:
size_t START_SIZE = 100;
size_t current_size = START_SIZE;
size_t current_index = 0;
int* numbers = new int[current_size];
while (!cin.eof())
{
string line;
getline(cin, line);
if (cin.fail())
{
//error
break;
}
cout << line << endl;
if (current_index == current_size)
{
current_size += START_SIZE;
int* tmp_arr = new int[current_size];
for (size_t count = 0; count < current_index; count++)
{
tmp_arr[count] = numbers[count];
}
delete [] numbers;
numbers = tmp_arr;
}
istringstream iss(line);
int num;
iss >> num;
numbers[current_index] = num;
current_index++;
}
delete [] numbers;