How to convert a string to a ifstream

馋奶兔 提交于 2020-01-01 14:26:35

问题


i am trying to open a file with ifstream and i want to use a string as the path (my program makes a string path). it will compile but it stays blank.

string path = NameOfTheFile; // it would be something close to "c:\file\textfile.txt"
string line;

ifstream myfile (path); // will compile but wont do anything.
// ifstream myfile ("c:\\file\\textfile.txt"); // This works but i can't change it
if (myfile.is_open())
{
   while (! myfile.eof() )
   {
      getline (myfile,line);
      cout << line << endl;
   }
}

I am using windows 7, My compiler is VC++ 2010.


回答1:


string path = compute_file_path();
ifstream myfile (path.c_str());
if (!myfile) {
  // open failed, handle that
}
else for (string line; getline(myfile, line);) {
  use(line);
}



回答2:


Have you tried ifstream myfile(path.c_str());?

See a previous post about the problems with while (!whatever.eof()).




回答3:


I'm unsure as to how this actually compiles, but I assume you are looking for:

#include <fstream>
#include <string>
//...
//...
std::string filename("somefile.txt");
std::ifstream somefile(filename.c_str());
if (somefile.is_open())
{
    // do something
}



回答4:


//Check out piece of code working for me 
//---------------------------------------
char lBuffer[100];
//---
std::string myfile = "/var/log/mylog.log";
std::ifstream log_file (myfile.str());
//---
log_file.getline(lBuffer,80);
//---


来源:https://stackoverflow.com/questions/4881210/how-to-convert-a-string-to-a-ifstream

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!