使用 ios::Nocreate 标志会导致出现“未声明的标识符”错误。

6
可能重复问题:编译C++代码时出现ios::nocreate错误 我一直在研究如何在C++/C#中创建简单的词法编译器,但是当我尝试编译程序时,出现了一个错误:
error c2065 'nocreate' undeclared identifier 

我该如何处理这个问题?但我认为可能与fstream头文件有关,你有什么想法可以处理吗?

这是代码导致错误的地方。

loadTransitionTable( );

    fstream File("input.txt", ios::in|ios::Nocreate);

    if (!File)
    {
       cout<<"\n Unable to open the input file."<<endl;
       cout<<"\n Press any key to exit.";

       getch( );
       exit(0);

2
请查看https://dev59.com/yEjSa4cB1Zd3GeqPDjge。 - Daniel Gehriger
也许是因为没有使用nocreate标志?如果你使用ios::in(默认值为ifstream)打开文件,那么如果文件不存在就不会创建新文件。 - Some programmer dude
3个回答

12

ios::Nocreate不是标准C++的一部分,但如果意图是防止文件在不存在时被创建,你可以放心。无论如何,这是ifstream的默认设置,所以你只需这样说:

fstream File("input.txt", ios::in);

4

如果您使用的是VisualStudio,请尝试:

std::fstream File("input.txt", std::ios::in|std::ios::_Nocreate);

3
标准C++库不定义std::ios::Nocreate。因为打开的文件只是用于读取的,所以你可以省略这个参数:

fstream File("input.txt", ios::in);

或者直接使用:

ifstream File("input.txt");


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接