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

时间:2012-11-13 10:13:25

标签: c++ fstream

  

可能重复:
  ios::nocreate error while compiling a C++ code

我一直在研究如何在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);

3 个答案:

答案 0 :(得分:10)

ios::Nocreate不是标准C ++的一部分,但如果目的是为了防止文件被创建(如果文件尚不存在),您可以放松一下。这是ifstreams的默认值,所以你可以说:

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

答案 1 :(得分:3)

标准c ++库未定义std::ios::Nocreate。无论如何都不会创建为阅读而打开的文件,因此您可以将其删除:

  

fstream文件(“input.txt”,ios :: in);

或只是使用:

  

ifstream File(“input.txt”);

答案 2 :(得分:2)

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

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