C ++处理文件

时间:2011-12-17 02:04:20

标签: c++ file

我在使用txt文件在C ++中工作时遇到了问题。首先,我想创建一个程序 有.cpp和.h文件..它们有类和函数。

所以这是我的问题:

例如,我有txt文件,其中包含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();   
}

1 个答案:

答案 0 :(得分:3)

虽然我不清楚它是如何工作的,但我可以猜测文件中的内容多于5个字符串(可能是另一个换行符)导致while条件评估为true导致for循环读取5行(这将失败并且实际上没有读取任何内容)并将字符串数组中的好值替换为糟糕的(空字符串)。

您可能希望将条件添加到while循环本身,而不是使用外部for循环;类似的东西:

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