<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
今天在 vs2008 中运行一个小程序的时候,发现了一个小问题,ifstream 的 open 函数中不能用 ios::nocreate 属性。详细见代码:
#include <fstream>
#include <iostream>
#include <stdlib><span style="color: #0000ff">int</span> main()
{
<span style="color: #0000ff">using</span> <span style="color: #0000ff">namespace</span> std;
ifstream inFile;
inFile.open("<span style="color: #8b0000">my.dat</span>",ios::in | ios::nocreate);
<span style="color: #0000ff">if</span>(!inFile)
{
cerr 不能打开my.dat" return 0;
}</stdlib></iostream></fstream>
出现错误:
error C2065: “nocreate”: 未声明的标识符
error C2065: “inFile”: 未声明的标识符
原因:从 vs 2003 开始,微软用一个新的 iostream 替换了原来的。新包中没有 nocreate 标识符。
原来 ifstream 中的 open 函数默认打开就是不创建文件。如果没有这个文件则打开出错,而不是创建文件。详见代码运行结果:
#include <fstream>
#include <iostream>
#include <stdlib><span style="color: #0000ff">int</span> main()
{
<span style="color: #0000ff">using</span> <span style="color: #0000ff">namespace</span> std;
ifstream inFile;
inFile.open("<span style="color: #8b0000">my.dat</span>",ios::in);
<span style="color: #0000ff">if</span>(!inFile)
{
cerr 不能打开my.dat" return 0;
}</stdlib></iostream></fstream>
运行结果:
分享到:
相关推荐
常用的方式有 ios::app、ios::ate、ios::binary、ios::in、ios::out、ios::nocreate、ios::noreplace、ios::trunc 等。 例如,以二进制输入方式打开文件 c:\config.sys: fstream file1; file1.open("c:\\config....
* `ios::nocreate`:不建立文件,所以文件不存在时打开失败 * `ios::noreplace`:不覆盖文件,所以打开文件时如果文件存在失败 * `ios::trunc`:如果文件存在,把文件长度设为 0 可以用“或”把以上属性连接起来,...
* ios::nocreate:不建立文件,所以文件不存在时打开失败 * ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败 * ios::trunc:如果文件存在,把文件长度设为 0 可以用“或”把以上属性连接起来,如 ios...
* ios::nocreate:不建立文件,所以文件不存在时打开失败 * ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败 * ios::trunc:如果文件存在,把文件长度设为 0 例如,以二进制输入方式打开文件 c:\...
- **`ios::nocreate`**:如果文件不存在,则不创建新文件。 - **`ios::noreplace`**:如果文件已存在,则不允许替换。 ### 示例代码解析 在提供的示例代码中,首先通过`ofstream`创建了一个名为“2.txt”的文件,...
* ios::nocreate:打开一个文件时,如果文件不存在,不创建文件 * ios::noreplace:打开一个文件时,如果文件不存在,创建该文件 * ios::trunc:打开一个文件,然后清空内容 * ios::ate:打开一个文件时,将位置移动...
- **`ios::nocreate`**:如果文件不存在,则不创建新文件。 - **`ios::noreplace`**:如果文件已存在,则不允许替换。 - **`ios::trunc`**:如果文件已存在,则将其大小设置为0。 示例代码: ```cpp ...
* ios::nocreate:不建立文件,所以文件不存在时打开失败 * ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败 * ios::trunc:如果文件存在,把文件长度设为0 可以用“或”把以上属性连接起来,如ios::...
- `ios::nocreate`:尝试打开一个文件,如果文件不存在,则不创建新文件。 - `ios::noreplace`:打开一个文件时,如果文件不存在,则创建该文件。 - `ios::trunc`:打开一个文件,然后清空内容,常用于写入模式。 - ...
- `ios::nocreate`:若文件不存在,则打开操作失败,不创建新文件。 - `ios::noreplace`:若文件已存在,则打开操作失败,不覆盖原有文件。 - `ios::trunc`:若文件存在,将其长度设为0,相当于清空文件。 **文件...
- `ios::nocreate`:文件不存在时产生错误。 - `ios::noreplace`:文件存在时产生错误。 - `ios::binary`:二进制文件模式。 三、文件保护方式 文件保护方式主要涉及文件的共享属性,如`filebuf::openprot`、`...
ifstream filein(filename,ios::in|ios::nocreate); // 以输入方式打开一个文件,ios::nocreate表示原文件不存在时,不创建 if(!filein) { cout打开文件失败!文件可能不存在!"; exit(1); } for(int i=0;i;i...
- `ios::nocreate`:如果文件不存在则操作失败。 - `ios::noreplace`:如果文件存在则操作失败。 - `ios::binary`:以二进制模式打开文件。 - **示例代码**: ```cpp ofstream fout("d:\\me.txt"); // 打开或...
- `ios::nocreate`:尝试打开一个文件而不创建它(如果文件不存在,则操作失败)。 - `ios::noreplace`:尝试打开一个文件而不会覆盖已存在的文件(如果文件存在,则操作失败)。 - `ios::trunc`:打开一个文件并...
- `ios::nocreate`:若文件不存在,则打开失败。 - `ios::noreplace`:若文件已存在,则打开失败。 - `ios::trunc`:若文件存在,清空文件内容。 例如,以二进制读取模式打开文件: ```cpp fstream file1; file1....
- `ios::nocreate`:如果文件不存在则打开失败。 - `ios::noreplace`:如果文件已存在,则打开失败。 - `ios::trunc`:如果文件存在,则截断文件。 - `nProt`指定文件的保护模式,可以是以下之一: - `filebuf::...