首页 > 解决方案 > 在 C++ 中,使用 ifstream 打开一个 csv 文件

问题描述

我正在尝试使用 ifstream 在 C++ 中打开一个 csv 文件,文件路径名中有一个目录。该文件确实驻留在指定的目录位置,但我在执行代码时观察到变量 inFile 。到目前为止,我的研究表明代码是正确的,但显然有些地方是错误的。有什么建议么?

谢谢,KG

#include <string>
#include <fstream>
#include <iostream>
virtual void run()
{
    string file_dir = "/home/datafiles/";
    string csvFile = file_dir + "/myFile.csv";
 
    ifstream inFile;
    inFile.open("csvFile", ios::in);

    // file check to see if file is open
    if(!inFile.is_open()) {
        cout << "error while opening the file" << endl;
    }
}

标签: c++

解决方案


在同事的帮助下,我找到了我的 csv 文件打开问题的答案。

@David - 您建议删除“inFile.open”代码行中的双引号。除了删除双引号之外,我还需要添加 c_str(),它“返回指向以空字符结尾的字符数组的指针,其数据与存储在字符串中的数据相同”,.data() 也执行相同的功能( cppreference.com)。

@ user4581301 - 我也知道 ios::in 隐含在 ifstream 中,仅将其包含在此处作为参考;谢谢。

修改后的代码如下:

#include <string>
#include <fstream>
#include <iostream>
virtual void run()
{
    string file_dir = "/home/datafiles/";
    string csvFile = file_dir + "/myFile.csv";
 
    ifstream inFile;
    inFile.open(csvFile.c_str(), ios::in);

    // file check to see if file is open
    if(!inFile.is_open()) {
        cout << "error while opening the file" << endl;
    }
}

真的很感谢所有的帮助。

享受,KG


推荐阅读