getline在while循环中不执行任何操作

问题描述

我正在使用Ubuntu 20.04。我正在尝试在文本文件中用编码为UTF8的重音字符计数行号。

我使用getlinewifstream编写了while循环。

但是,当我启动程序时,我在控制台中有了它:

./jeu_lettre 
Chemin = /home/duncan/Documents/Programmation_CPP/jeu_des_lettres/liste_test.txt

Total lines number = 0

由于getline似乎看不到行,该如何解决

...
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <string>
    
int main(int argc,char** argv){
    
    int nbreLigne;
    std::vector<std::wstring> dico;
    std::string chemin("/home/duncan/Documents/Programmation_CPP/jeu_des_lettres/liste_test.txt");
    std::wstring ligne,line;
    std::cout << "Chemin = " << chemin << std::endl;
        
    std::wifstream file(chemin.c_str(),std::ios::in);
    
    if (file){
        
        //compte les lignes
         
        file.open(chemin.c_str(),std::ios::in);
      
        while (std::getline(file,ligne)){
            nbreLigne++;
            dico.push_back(ligne);
            std::wcout << dico[nbreLigne] << std::endl;
        }
    
        std::cout << "Total lines number = " << nbreLigne << std::endl;
        file.close();
    }
    else
    {
        std::cout << "ERREUR: Impossible d'ouvrir le fichier." << std::endl;
    }
    
    file.open("liste_test.txt");
    std::getline(file,ligne);
    std::wcout << ligne << std::endl;
    
    return 0;
}
...

解决方法

您没有在while主体中发出任何命令来中断while。