2010-11-16 3 views
0

Поэтому мне нужно, чтобы создать обугленный буфер, содержащий 4 строки текста (en_US) какC++ нескольких линий ввода

first line 
line with some number like 5 
line 3 
empty line 

Что такое правильный способ получения такого обугленный буфера от пользователя и как получить его длину?

+0

Является ли это домашнее задание? Это круто, если это так, но мы хотели бы знать. –

+0

@ Джон, я так не думаю, очень много qs недавно от @Kabumbus. –

+0

Вы вообще хотите читать до тех пор, пока не произойдет какое-либо прерывание ввода или это только эти четыре фиксированные линии? – Pyjong

ответ

2

Вместо того, чтобы получить буфер, как это, возможно, было бы легче читать четыре строки в отдельные string с из стандартного ввода с использованием getline (использовать цикл, если вы предпочитаете):

Тогда общая длина данных является сумма индивидуума string длина. В качестве альтернативы используйте этот метод для извлечения данных от пользователя, а затем объедините их в четырехстрочный stringstream.

Комбинированный пример кода:

#include <string> 
#include <sstream> 
#include <iostream> 

std::string s[4]; 
size_t length(0); 

std::ostringstream output; 

for (size_t index = 0; index < 4; ++index) 
{ 
    getline(std::cin, s[index]); 
    length += s[index].length(); 

    output << s[index] << std::endl; 
} 

output.flush(); 
streamoff streamLength = output.tellp(); 
+0

Приятно, но я бы пошел на строки 'std :: string [4]; for (...) std :: getline (std :: cin, lines [i]); 'облегчает изменение и меньше боли, чтобы писать! –

+0

@ Андре, согласился, я изменю это. –

Смежные вопросы