2011-12-17 7 views
0

У меня проблема с C++ с файлами txt. Прежде всего, я хочу создать программу, в которой имеют файлы .cpp и .h, которые имеют классы и функции.C++, связанный с файлами

Так вот моя проблема:

, например, я текстовый файл, который содержит 5 строк текста (игрок имена). Поэтому я хочу, чтобы каждая строка этого txt была переменной строки. Но пока я хочу использовать эти новые переменные, они уныло исчезают.

Вот код программы:

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main() { 
    string line; 
    int i; 
    string player[5]; 

    ifstream myfile ("1-Efes Pilsen.txt"); 

    if (myfile.is_open()) 
    { 
     while (myfile.good()) 
     { 
      for (i=0;i<5;i++) 
      { 
       getline (myfile,line); 
       player[i] = line; 
      } 
      // after this point I still can use new variables 
     } 
    } 
    else cout << "Unable to open file"; 

    cout << player[1]; // <--- NOT WORKING. WHY? 

    myfile.close(); 
} 
+4

Что вы подразумеваете под «нерабочим»? –

ответ

3

Хотя мне не понятно, как это не работает, я могу догадаться, что есть больше содержания в файле, чем только 5 строк (возможно, другой символ новой строки) что приводит к тому, что условие while оценивается в true, заставляя цикл for читать 5 строк (что не получится, а на самом деле ничего не прочитано) и заменить хорошие значения в строковом массиве crappy (пустая строка).

Вместо того, чтобы иметь внешнюю петлю while, вы, вероятно, захотите добавить условие к самому циклу for; что-то вроде:

for (i=0;i<5 && myfile.good();i++) 
{ 
    getline (myfile,line); 
    player[i] = line; 
} 
+1

Для (int I = 0; I <5 && getline (myfile, player [i]); ++ I); –

+0

Все приветствуют Мехрдада Афшари! :) –

+0

@MooingDuck Действительно. Я хотел, чтобы все было ясно, и я не хотел расходиться с основной проблемой, поэтому я сохраню свой ответ так, как есть. –

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