代码之家  ›  专栏  ›  技术社区  ›  WaiHan

如何在C++中读取N到n+i线?[重复]

  •  0
  • WaiHan  · 技术社区  · 2 年前

    这是要读取的文件

    5
    Name1
    Name2
    Name3
    Name4
    Name5
    

    我目前的代码是:

    void readData(string fileName, string names[], int n) {
        ifstream myFile("file.txt");
        string line;
    
        if (myFile.is_open())
        {
            myFile >> n;  // read first line
            cout << n; 
    
            for (int i = 0; i < n; ++i) {
                getline(myFile, line);
                names[i] = line;
                cout << names[i] << endl;
            }
        }
    }
    

    我想将名称放入数组名称[],但即使n=5,它似乎只运行了4次。为什么?

    这是我得到的电流输出:

    5
    Name1
    Name2
    Name3
    Name4
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   pm100    2 年前

    当你读的时候,你没有读完整的第一行 myFile >> n .所以第一行只读取该行的其余部分,这是空的

     myFile >> n; 
     getline(myFile, line); // read rest of line
    

     getline(myFile, line); // read whole line
     n =  stoi(line);   // convert to int