微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。