void searchString(const string selection,const string filename)
{
ifstream myfile;
string sline;
string sdata;
myfile.open(filename);
while(!myfile.eof())
{
getline(myfile,sline);
sdata = sdata + sline;
}
最初我是使用file.txt的,而不是字符串的文件名作爲myfile.open(文件名),但如果我使用過的變量由功能,如字符串的文件名,它給我一個錯誤,作爲接着
myfile.open("file.txt");
錯誤消息:
main.cpp:203:25: error: no matching function for call to ‘std::basic_ifstream<char>::open(const string&)’
main.cpp:203:25: note: candidate is:
/usr/include/c++/4.6/fstream:531:7: note: void std::basic_ifstream<_CharT, _Traits>::open(const char*, std::ios_base::openmode) [with _CharT = char, _Traits = std::char_traits<char>, std::ios_base::openmode = std::_Ios_Openmode]
/usr/include/c++/4.6/fstream:531:7: note: no known conversion for argument 1 from ‘const string {aka const std::basic_string<char>}’ to ‘const char*’
make: *** [main.o] Error 1
你的代碼應該在C++ 11中工作。然而,它仍然值得指出:http://stackoverflow.com/questions/5105476/attempting-to-pass-string-to-stdifstream-as-argument?rq=1 – chris 2012-07-27 04:40:12