c++ - 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
我不知道如何从这里开始,因为除此之外我找不到任何问题,感谢任何建议!
解决方案
我发现了问题,我使用的文件本身有问题。我尝试使用相同的方法从另一个文件中读取,并且没有问题。感谢所有评论试图提供帮助的人!
推荐阅读
- python - 在python中将地图写入csv
- python - 在 Cartopy 地图中实时更新国际空间站位置
- symfony - Symfony FOSElasticaBundle 配置
- python - Python Selenium Click Button Within A Class
- android - 当文本重心为中心时,TextView 将第二行文本与第一行的开头对齐
- c# - 尝试删除图像时出现 IOException
- swift - 如果取消滑动返回上一屏的过程,navigationBar保持不变
- javascript - 气泡图 d3 上重叠圆圈的工具提示
- php - 当路由有多个参数时,Laravel 返回 404
- java - Comparator.comparing 使用嵌套对象的字段对列表进行排序