C++使用ifstream打开指定路径CSV文件失败的问题求助
C++ ifstream打开CSV文件失败修复方案
- 核心语法错误:调用
inFile.open()时错误给变量名csvFile加了双引号,导致程序尝试读取名叫「csvFile」的固定名称文件,而非你拼接好的路径。直接删除双引号,传入csvFile变量本身即可。 - 路径拼接不规范:你定义的
file_dir末尾已经携带斜杠/,拼接文件名时又额外加了斜杠,最终生成路径为/home/datafiles//myFile.csv,虽然Linux系统可兼容双斜杠,但不符合路径规范,建议删除拼接时的冗余斜杠。 - 命名空间缺失:代码中用到的
string、ifstream、cout、endl都属于std标准库命名空间,未声明作用域会直接导致编译失败。可以在每个标准库类型前加std::前缀,或是在代码开头添加using namespace std;声明。 - 若修复以上问题后仍报错,可按以下方向排查:
- 确认程序运行的用户身份对
/home/datafiles/目录和目标csv文件有读权限 - 打开失败时打印
csvFile变量的实际值,和系统中文件的真实路径做比对,排查隐性的字符拼写错误
- 确认程序运行的用户身份对
修复后参考代码
#include <string> #include <fstream> #include <iostream> // 注:virtual修饰的函数只能作为类成员函数,此处默认你是在类内部定义该方法 virtual void run() { std::string file_dir = "/home/datafiles/"; std::string csvFile = file_dir + "myFile.csv"; std::ifstream inFile; inFile.open(csvFile, std::ios::in); if(!inFile.is_open()) { std::cout << "error while opening the file, target path: " << csvFile << std::endl; } }
内容的提问来源于stack exchange,提问作者user16451156
相关产品推荐
相关产品推荐

