ifstream()从字符串变量中获取文件名的C ++问题

问题描述 投票:-1回答:1

我有这个简单但烦人的问题。

如果fileName是硬编码的,或者通过字符串变量赋值,ifstream dataFile(fileName)工作正常,但是当从参数提供时,它无法找到该文件。

我有以下代码 -

//This function will get filenames from a .txt file
//Then call getDataFromFile() with filename as argument

void getFileNames(string dataFileName){

   string line;
   ifstream dataFile(dataFileName);
   if(!dataFile){
      cout << "Error! No such file found! Ending Program." << 
      endl;
      exit(0);
    }

    while(getline(dataFile,line)){
       if(!line.empty()){
           getDataFromFile(line);
       }
    }
} 

//**Issue is inside this function**

void getDataFromFile(string fileName){

   //Files are under "data/" path -
   //To access Jan.csv - "data/Jan.csv"

   string filePath = "data/Jan.csv"; //Works
   string filePath = "data/"+fileName; //Not working - Unable to find file   

   ifstream dataFile(filePath);
 //...Rest of code
}

以下是.txt文件的内容

Jan.csv

Feb.csv

我试图将字符串作为c字符串传递使用

ifstream dataFile(filePath.c_str());

仍然无法找到该文件。

c++ string ifstream
1个回答
0
投票

发现了这个问题。文件名以“\ r”结尾。

对于像我这样使用codeblock的c ++新手 -

您可以通过设置断点并在Debugger控制台中检查来在运行时检查文件名。

1)通过单击要检查enter image description here的行的左侧来设置断点

2)单击顶部“红色一”的调试按钮运行调试器。

3)通过调试器控制台enter image description here进行检查

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.