同时,编译一个包,在 RHEL 5.0 上用 C++ 编写。我收到以下错误。
> 错误:nocreate
不是成员std::ios
源代码对应于:
ifstream tempStr(
argv[4]
,ios::in
|ios::nocreate
);
我试过了
#g++ -O -Wno-deprecated <file.cpp> -o <file>
也:
#g++ -O -o <文件>
请提出解决方案。
ios::nocreate
不是标准 C++ 的一部分 - 你期望它做什么?
编辑:从谷歌看来,它似乎是为了防止文件在不存在的情况下被创建。无论如何,这是 ifstreams 的默认设置,所以你可以说:
ifstream f( filename );
if ( ! f.is_open() ) {
// open failed - probably because infput file does not exist
}
如果文件不存在,则以读取模式 ( ) 打开文件ios::in
不会创建它。您可以不使用非标准的nocreate
. 因为in
是默认的ifstream
:
ifstream tempStr (argv[4]);
您可以使用 fopen 和 O_CREAT|O_EXCL 将文件作为文件句柄打开,然后使用
__gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, std::ios::out);
ostream os(&filebuf);
这使用了定义在 . 如果有人有更好的解决方案,我真的很想知道!