ifstream inFile;
inFile.open("C:/FilePathThatWorks");
以上似乎在C ++中有效。但是,如果我尝试使用String或CString或其他任何东西,然后将其插入inFile.open(ExampleString)
,则它在编译时会失败(此问题底部的错误)。问题不是关于我的代码,而是关于如何使C ++接受inFile
的变量。
如果它只接受char *变量,那么也许有一种方法可以用char *形式从用户那里获取输入,并带有空终止符和所有内容。
error: no matching function for call to 'std::basic_ifstream<char>::open(std::__cxx11::string&)'
答案 0 :(得分:4)
public
中的方法open
不接受fstream
。您需要通过std::string
。
因此,只需致电char*
上的c_str()
。
答案 1 :(得分:2)
ifstream需要一个char *参数作为文件名。参见http://www.cplusplus.com/reference/fstream/ifstream/ifstream/
大多数字符串类都有某种方式可以转换为这种字符串(例如c_str())
答案 2 :(得分:-1)
如果要使用CString:
Wavelength
这里不需要演员。
RefTrans
可以表示两个不同的字符串,具体取决于项目设置。如果它是CString path = "c:\\FilePathThatWorks";
ifstream inFile;
inFile.open(static_cast<const char*>(path));
的字符串,则代码应编译,如果字符类型为CString
,则编译将失败。