手动输入文件名ifstream

时间:2016-04-18 04:07:10

标签: c++ file-io

我可以手动输入终端内的文件名吗?

例如,程序会问我要打开哪个文件。我会手动输入“test.txt”并打开test.txt。但是,我的编译器发出以下错误:

no matching function for call to 'std::basic_ifstream<char>::basic_ifstream(std::string&)'

我的代码:

int main() {
    string input;
    cout << "Please enter the name of the file\n";
    cout << "Input: ";
    getline (cin, input);

    ifstream file (input);

    if (file.is_open()) {
        // blah
    } else {
        // blah
    }
}

如何手动输入文本文件名?

1 个答案:

答案 0 :(得分:1)

如果您使用的是较旧的(pre-C ++ 11)编译器,则必须使用:

ifstream file (input.c_str());

虽然文件名是类似于字符串的东西,而C ++ 98却有std::string,但它们并没有将两个和两个放在一起(可以这么说),所以在C ++ 98中,字符串 - 喜欢指定要打开的文件名称的东西必须指定为char const *(即C风格的字符串)而不是std::string

我预测只支持char const *std::string只是时间问题,因为名称看起来(至少接近)同样愚蠢 - 一旦我们习惯使用范围,它就会'很明显它应该只是一些类似角色的东西。