晕 问个很菜的问题

czbever 2009-06-08 05:09:32
c++里怎么打开一个文件,如果该文件不存在则创建它呢?
我这样不行


fstream fp("a.txt");
if(!fp)
return 0;

fp<<"姓名"<<endl;
fp.close();
...全文
68 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
haojianfeng11 2009-06-08
  • 打赏
  • 举报
回复
c++里怎么打开一个文件,如果该文件不存在则创建它呢?
我这样不行

C/C++ code

fstream fp("a.txt");
if(!fp)
return 0;

fp<<"姓名"<<endl;
fp.close();


是ofstream,注意要包括"fstream"的头文件,在文件输出中是可以自动创建的,而文件输入不可以,注意创建文件时指明文件位置,方便查找。你的第一条语句可写成这样:ofstream fp("c:\\a.txt");
czbever 2009-06-08
  • 打赏
  • 举报
回复
笔误 再加个delete []temp;
czbever 2009-06-08
  • 打赏
  • 举报
回复
晕 原来是这样 : 谢谢各位了


HANDLE hf = CreateFile(TEXT("a.txt"),GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,NULL,NULL);
if(hf == INVALID_HANDLE_VALUE)
return FALSE;

//utf-16转utf-8
int Size = WideCharToMultiByte(CP_UTF8, 0, pspvSubject->Value.lpszW, -1, NULL, 0,NULL,NULL);
char *temp = new char[Size];

if( !temp )
{
delete []temp;
OutputDebugString(L"初始化失败!");
return FALSE;
}
WideCharToMultiByte (CP_UTF8, 0, pspvSubject->Value.lpszW, -1, temp, Size,NULL,NULL);

DWORD dwWritten=0;
if( !WriteFile(hf,temp,strlen(temp)*sizeof(char),&dwWritten,NULL) )
{
CloseHandle(hf);
return FALSE;
}
CloseHandle(hf);
xiaocuiming88 2009-06-08
  • 打赏
  • 举报
回复
in_stream.close();
out_stream.close();
in_stream.open(file_name);
为什么要加这个?
czbever 2009-06-08
  • 打赏
  • 举报
回复
我是要用标准c++的那种 不要MFC的
zbihong 2009-06-08
  • 打赏
  • 举报
回复
帮顶!!!
lingyin55 2009-06-08
  • 打赏
  • 举报
回复
ofstream fp("a.txt");
这样文件不存在时就会自动创建了。
T技术沙龙 2009-06-08
  • 打赏
  • 举报
回复
手上没有编程工具,给个思路给楼主吧
执行一个打开文件操作->
情况1:成功->继续操作
情况2:失败->创建一个和打开文件同名的文件

唉,还是写写吧,感觉写不出感觉来
#include"iostream"
#include"fstream"
using namespace std;

int main()
{
ifstream in_stream;
ofstream out_stream;
char file_name[15];
cout<<"Please enter the name of the file"<<endl;
cin>>file_name;
in_stream.open(file_name)
if(in_stream.fail())//判断打开是否成功
{
out_stream.open(file_name);//创建改文件
}
in_stream.close();
out_stream.close();
in_stream.open(file_name);
...//你要执行的操作
return 0;
}


这个是临时写的,没有运行试过,楼主自己运行吧
xwb2766 2009-06-08
  • 打赏
  • 举报
回复
CFile msgfile;//在前面补上这个声明
xwb2766 2009-06-08
  • 打赏
  • 举报
回复

CString fileName ;
fileName = "d:\\MsgFile.txt";
if (msgfile.Open(fileName.GetBuffer(0), CFile::modeCreate | CFile::modeWrite| CFile::modeNoTruncate))
{
msgfile.SeekToEnd();
msgfile.Write(stemp, stemp.GetLength());
msgfile.Close();
}

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧