加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 手动输入文件名ifstream

发布时间:2020-12-16 07:16:06 所属栏目:百科 来源:网络整理
导读:我可以手动输入终端内的文件名吗? 例如,程序会询问我要打开哪个文件.我将手动输入“test.txt”,它将打开test.txt.但是,我的编译器发出以下错误: no matching function for call to 'std::basic_ifstreamchar::basic_ifstream(std::string)' 我的代码: int
我可以手动输入终端内的文件名吗?

例如,程序会询问我要打开哪个文件.我将手动输入“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 filen";
    cout << "Input: ";
    getline (cin,input);

    ifstream file (input);

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

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

解决方法

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

ifstream file (input.c_str());

虽然文件名是一个类似字符串的东西,而C 98有std :: string,但是它们并没有把两个和两个放在一起(可以这么说),所以在C 98中类似于字符串的东西来指定一个名字.您要打开的文件必须指定为char const *(即C样式字符串)而不是std :: string.

我预测只支持char const *和std :: string作为名称看起来(至少接近)同样愚蠢只是一个时间问题 – 一旦我们习惯使用范围,很明显它应该真的只是一些像人物一样的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读