2013-11-09 2 views
0

Мне нужен способ прочитать строки, вставленные пользователем в консоли. Пользователь вставляет его таким образом:C++ получить несколько строк

первая строка: п - число строк, кроме этого один

второй - п-я: строка объекта

Если я прочитал ее с CIN, он читает первую строку , выходит из программы, а следующие строки помещаются на вход консоли. С scanf я получаю похожие результаты.

string s[100]; 

int N = 0; 
scanf("%i", N); 

for (int i = 0; i < N; i++) 
{ 
scanf("%s", s); 
} 
+0

Показать код, пожалуйста. – n0rd

+0

@ n0rd Здесь вы идете! – Cobold

+0

C++ streams ('cin' и' cout') лучше использовать для чтения строк – Zifre

ответ

0

getline() сделает трюк для вас. Попробуйте следующее:

string lines[100]; 

int number = 0; 
cin >> number; 

for (int idx = 0; idx != number; ++idx) 
{ 
    getline(cin, lines[idx]); 
} 

Обратите внимание, что вы не можете прочитать более 100 строк таким образом. Если вы хотите динамически выделять массив строк размера n, вы можете использовать новый оператор.

1

Было бы лучше, если бы вы использовали std::vector<std::string> и использовать std::getline для извлечения строки:

std::vector<std::string> lines; 
std::string line; 

while (std::getline(std::cin >> std::ws, line)) 
{ 
    if (!line.empty()) 
     lines.push_back(line); 
} 
Смежные вопросы