2013-05-06 44 views
0

我想在一個文件中打印出3行,但是最終發生的是它在所有3個點中打印1行,打印所有3個點中的第二行,然後,好吧,你猜對了,與第三次相同。我希望它在按下一次按鈕時打印出全部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 2013-05-06 14:45:43

+2

你能告訴我們你的代碼嗎? – 2013-05-06 14:45:45

+1

我們需要查看您的代碼,爲什麼不發佈正在進行打印的代碼片段。 – 2013-05-06 14:45:46

回答

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");