将变量用于文件路径如何工作?

时间:2018-09-07 00:14:07

标签: c++

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&)'

3 个答案:

答案 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,则编译将失败。