【发布时间】:2017-11-18 04:53:53
【问题描述】:
我在代码块中编写了以下代码,由于我是编程新手,所以我想用简单的话来了解问题。如果 open() 构造函数不存在,它会创建一个新文件吗?
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
int main()
{
char str[80];
cout<<"Enter a string : ";cin>>str;
int len=strlen(str);
fstream file;
file.open("TEXT",ios::in|ios::out);
for(int i=0;i<len;i++)
file.put(str[i]);
file.seekg(0);
char ch;
cout<<"\nPrintitng Contents....\n";
int k=0;
while(file)
{
file.seekg(k);
file.get(ch);
cout<<ch;
k++;
}
return 0;
}
【问题讨论】:
-
是什么让您相信存在问题?您期望什么结果,您观察到什么,两者有何不同?
-
看到您从不检查流的状态,您有多确定文件是否已打开?
-
请尽可能请使用
std::string而不是一些随机长度的C风格字符数组。 -
在您的代码中添加空格以使其可读。此外,
openis not a constructor, and you should read its document first -
我花了一段时间才找到这个超出标准的图表 (stackoverflow.com/a/26900463/4581301)。就其本身而言,它作为答案并没有那么有用,但如果将其与此处的图表 (en.cppreference.com/w/cpp/io/c/fopen) 结合使用,您会发现出了什么问题。