алгоритм — Как прочитать несколько строк от пользователя в C ++?

Поэтому я занимаюсь проблемами практики программирования ACM и всегда зацикливаюсь на получении информации от пользователя. Я использую C ++. Поэтому мне нужно прочитать ввод от пользователя, и это может быть несколько строк или одна строка, которую мы не знаем. Так что, если вход выглядит следующим образом:

2

1 2 3 4 5

2 2 2

Первая строка представляет количество игр, в которые играет пользователь, а следующие строки — это очки. Конец каждой игры завершается переводом строки. Мне нужно прочитать эти строки и сохранить их где-нибудь. Как мне это сделать? Я просматривал веб-сайты, и кажется, что большинство людей используют scanf, cin или getline, но я понятия не имею, что они делают.

Другой пример:

12 21

13 43

1 4

A C

0 0

Каждая строка будет содержать два числа, которые мне нужно добавить, разделенные пробелом. Когда я вижу два нуля, ввод сделан. Как мне прочитать их и проверить, 0 0?
Я попробовал что-то вроде:

string num1;
while (true) {
getline(cin,num1);
if (num1.empty()) {
break;
}
}

Но это не сработало. Пожалуйста, помогите, я думаю, я знаю, как решить проблему, но я не могу получить информацию от пользователя. Спасибо

-1

Решение

Что ж, я узнал об этом, выполняя онлайн-задания, и так я поступаю, когда это необходимо.

Первый случай, я думаю, что вы должны объявить N случаев, поэтому у меня есть:

int N;

Затем нам нужно несколько чисел в каждом случае, скажем, 3. Итак, я сделаю это:

int score1[N];
int score2[N];
int score3[N];

Наконец, когда вам нужно принять ввод, вы делаете это:

cin >> N;

for(int i = 0; i < N; i++)
cin >> score1[i] >> score2[i] >> score3[i];

Я не уверен, что это лучший способ сделать это, но именно так я это делаю, когда решаю онлайн-задачи. Удачи!

0

Другие решения

Это довольно грубо и громоздко, но это должно дать вам кое-что для работы:

#include <vector>
#include <string>
#include <sstream>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main() {
std::cout << "Enter two numbers (0 0 to exit): ";

string num1;
while (true) {
getline(cin, num1);

string buf;
stringstream ss(num1);
vector<string> tokens; // Create vector to hold the two numbers (separately)

// Split the two numbers (by the spaces)
while (ss >> buf)
tokens.push_back(buf);

cout << "Adding " + tokens[0] << " and " << tokens[1] << endl;

int sum = atoi(tokens[0].c_str()) + atoi(tokens[1].c_str());

cout << 0 + sum;

if (num1.empty()) {

break;
}
}

}

0