2013-05-06 2 views
0

Я пытаюсь распечатать 3 строки в файле, но то, что в итоге происходит, печатает 1 строки во всех трех точках, печатает вторую строку во всех трех точках, а затем, ну, вы догадались, то же самое с третьим. Я хочу, чтобы он распечатывал все 3 строки одним нажатием кнопки. Есть идеи?Как распечатать 3 строки из файла одновременно?

ifstream read_file; 
string fname, name; 
cout << "Type the complete address of the file you would like to open.\n"; 
cin >> fname; 
system("cls"); 
read_file.open(fname.c_str()); 

while(getline(read_file, fname)) 

{ 
if (fname == "")continue; 

cout << "You had "<< fname << " health left\n"; 
cout << "You delt " << fname << " damage\n"; 
cout << "There were " << fname << " enemies left\n"; 
system("pause"); 
} 


read_file.close(); 
system("pause"); 
+0

не уверен, что вы имеете в виду, вы можете дать пример того, что он делает и то, что вы хотите, это список дел? – dchhetri

+2

Не могли бы вы показать нам свой код? –

+1

Нам нужно увидеть ваш код, так почему бы не опубликовать фрагмент кода, который выполняет печать. –

ответ

4

Глядя на ваш код

while(getline(read_file, fname)) 
{ 
    if (fname == "") 
     continue; 

    cout << "You had "<< fname << " health left\n"; 
    cout << "You delt " << fname << " damage\n"; 
    cout << "There were " << fname << " enemies left\n"; 
    system("pause"); 
} 

это довольно очевидно, что вы читаете только одну строку, и печать его три раза - вы ничего не делаете, чтобы fname между этими выходами.

Я рекомендую вам прекратить повторное использование одной и той же переменной для нескольких целей, это источник многих ошибок.
(Далее предполагается, что нет пустых строк.)

string health; 
string damage; 
string enemies; 
while(getline(read_file, health) && getline(read_file, damage) && getline(read_file, enemies)) 
{ 
    cout << "You had "<< health << " health left\n"; 
    cout << "You delt " << damage << " damage\n"; 
    cout << "There were " << enemies << " enemies left\n"; 
} 

Если есть пустые строки в файле, рассмотрим написание собственных getnonemptyline функцию, которая пропускает пустые строки.

0

Как сказал molbdnilo, вы читаете только одну строку из файла, а затем пытаетесь сделать с ней три вещи. Если вы хотите, чтобы повторно использовать один и тот же (как ни странно с именем) переменной, вы могли бы сделать это как

while(getline(read_file, fname)){ 
    if (fname == "")continue; 
    cout << "You had "<< fname << " health left\n"; 
} 

while(getline(read_file, fname)){ 
    if (fname == "")continue; 
    cout << "You delt " << fname << " damage\n"; 
} 

while(getline(read_file, fname)){ 
    if (fname == "")continue; 
    cout << "There were " << fname << " enemies left\n"; 
} 

system("pause"); 
Смежные вопросы