c++ MFC ifstream 问题

voidCMFCApplication1Dlg::OnBnClickedButton2(){//TODO:Addyourcontrolnotificationhandle... void CMFCApplication1Dlg::OnBnClickedButton2()
{
// TODO: Add your control notification handler code here
CString s = TEXT("*********** C++ ***********");
char line[256];
ifstream ifs("book.txt");

while (ifs.getline(line, 256), line != NULL);
{

s += line;
s += TEXT("\r\n");

}
ifs.close();
SetDlgItemText(IDC_EDIT1, s);

}
运行不了
展开
 我来答
育知同创教育
2016-07-14 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
ifstream是只能输入文件的, 而要拷贝肯定又要读又要写的, 所以肯定不能只用ifstream. 当然ifstream如果真地想让它写文件, 也可以, 但是任何一个合格的程序员是不会这样干的, 这样写出的程序可读性极低.

综上所述, 要想实现拷贝文件最少使用两个类, 而其中一个必然是ifstream, 另一个就是ofstream.
因为是C++实现, 所以要用面向对象的思想去写代码, 代码如下:

#include <fstream>
using namespace std;

class CFile //此类与MFC的CFile类重名, 若要应用于MFC, 需要修改类名.
{
ofstream fout;
ifstream fin;
CFile(char *in, char *out):fout(out), fin(in){} //构造函数
~CFile(){} //析构函数不需要执行任何操作
bool Copy()
{
if (!fout || !fin) //若打开文件失败
return false; //返回假
char data; //用来传输数据的变量
while(!fin.eof()) //判断源文件是否到文件尾, 若是退出循环
{
fin.read(&data, 1); //读取数据
fout.write(&data, 1); //保存数据
}
return true; //拷贝成功, 返回真
}
}; //不要掉了分号
追问

(while死机)

我只是想用ifstream读取"book.txt"把它显示在SetDlgItemText

我只知道应该是while出了问题(不是多了的";")

我用while会死机(没反应)

我想重复读取


s += line;

s += TEXT("\r\n");

之后显示在SetDlgItemText(文字框,EDIT CONTROL)

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式