首页 > 解决方案 > is_open 返回 true,但 getline 只返回空字符串

问题描述

我正在尝试从 C++ 中的 .csv 文件中读取。调用 myfile.open(file) 后,is_open 返回 true,但 getline 只返回空字符串。

我尝试使用向量来读取行,然后将向量数据写入要读取的变量,但这也只返回了空字符串。

std::ifstream csvFile;
std::string line = "!", temp= "...";

csvFile.open("file.csv");
if(csvFile.is_open()) {
    std::cout << "open\n";
    std::cout << line << "\n";
    if(getline(csvFile, line)) {
        std:: cout << line << "\n";
    } else {
        std::cout << temp << "\n";
    }
}
else {
    std:: cout << "not opening\n";
}
std:: cout << line;

运行后我的输出如下。

[ctest] open
[ctest] !
[ctest] ...
[ctest] 

如图所示,虽然文件本身不是空的,但 getline() 只返回一个空字符串。

这些是 csv 文件的前 20 行左右,我确保该文件位于当前工作目录中。

阿尔法002

16:55:54 13/6/2019

428,1.61,-1.31,-0.13,0,0

448,1.61,-1.47,-0.13,0,0

468,1.68,-1.07,-0.44,0,0

488,1.61,-1.39,-0.76,0,0

508,1.61,-1.47,-0.68,0,0

3528,1.61,-1.55,-0.36,0,0

3548,1.61,-1.31,-0.28,0,0

3568,1.68,-1.15,-0.36,0,0

3588,1.68,-1.63,-0.76,0,0

3608,1.68,-0.76,-0.68,0,0

3628,1.68,-1.15,-0.21,0,0

3648,1.68,-0.76,-0.28,0,0

3668,1.68,-1.39,-0.13,0,0

3688,1.68,-1.07,-0.21,0,0

3708,1.61,-1.47,0.03,0,0

我不知道如何从这里开始,因为除此之外我找不到任何问题,感谢任何建议!

标签: c++

解决方案


我发现了问题,我使用的文件本身有问题。我尝试使用相同的方法从另一个文件中读取,并且没有问题。感谢所有评论试图提供帮助的人!


推荐阅读