c++读文本文件的问题

kimdash 2009-02-06 05:24:56
我使用C++写了个读文本的小程序当练习,但是为什么在输出的时候会出现内存错误呢?
另外想问下,ifstream打开的文件类型必须是CHAR型的吗?我用STRING会直接报错不给编译。
代码如下:

#include <iostream>
#include <fstream>
using namespace std;
using std::string;
int main()
{
string yn = "";
ifstream i_file;
char filename[] = "";
string out_text;

do
{
cout<<"请输入文本名:";
cin>>filename;
cout<<"输入的文件是:"<<filename<<",确定吗?Y/N"<<endl;
cin>>yn;
}while(yn[0] != 'y' && yn[0] != 'Y');

i_file.open(filename);
if (i_file.is_open())
{
while(i_file.good())
{
i_file>>out_text;
cout<<out_text<<endl;
}
}
else
{
cout << "打开文件:" << filename << " 时出错!";
i_file.close();
}

system("pause");
return 0;
}
...全文
113 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kimdash 2009-02-07
  • 打赏
  • 举报
回复
谢谢两位的回答!
按照justin12zhu的说法成功运行了。按照书上的例子是直接给filename赋初值,所以后面我输入的时候就没有加长度了。。
yuzl32 2009-02-06
  • 打赏
  • 举报
回复

// T.c
#include <stdio.h>

int main(int argc, char *argv[])
{
int c;
FILE *fstream = NULL;

if((fstream=fopen("T.c","r"))== NULL)
{
printf("file was not opened");
return 0;
}
for(c=fgetc(fstream);c != EOF;putchar(c),c=fgetc(fstream));
}
码农自来也 2009-02-06
  • 打赏
  • 举报
回复
char filename[128] = "";
这样修改,要不你的filename就只有1个字符大小
kimdash 2009-02-06
  • 打赏
  • 举报
回复
对了,我使用的环境是WINXP,编辑器是netbeans,编译器是minGW

65,211

社区成员

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

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