CBX的困惑:文件输入与输出

Botton2008 2004-08-12 09:23:00
最近在CBX (C++ BuilderX)调试一个文件操作程序时,遇到很令人困惑的问题:

1. 同样一个文件在DEV-C++和BCB下可以正常读出内容,但在CBX下却只能读出一个“^”;
2. 在CBX下向文件输入数据时,按Ctrl+Z无法结束输入,Ctrl+E也不行。

我查找了CBX的帮助文件,但没能找到答案。谁能帮帮我啊?
...全文
333 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Botton2008 2004-08-31
  • 打赏
  • 举报
回复
本问题已经找到解决方法:
即添加"完整的文件路径",如Drive Letter:/path1[/path2...]/filename.

特别感谢Kerbcurb!
kerbcurb 2004-08-14
  • 打赏
  • 举报
回复
比如:
ofstream writeFile("c:\\mat.dat", ios::out);
ifstream readFile("c:\\mat.dat", ios::in);
Botton2008 2004-08-13
  • 打赏
  • 举报
回复
再问Kerbcurb:

如何在代码中添加"文件的完全路径"呢?
Botton2008 2004-08-13
  • 打赏
  • 举报
回复
非常感谢Kerbcurb()的热心帮助!

想教Kerbcurb():

你所说的全部路径是指“文件的完全路径”吗?
ThinkX 2004-08-13
  • 打赏
  • 举报
回复
bcb6和cbx是同一个编译器,结果应该完全一致
qiuafa 2004-08-13
  • 打赏
  • 举报
回复
斗胆问一下是不是分割路径这个问题呀:
\ 不等于 /
kerbcurb 2004-08-13
  • 打赏
  • 举报
回复
文件的完全路径
jishiping 2004-08-12
  • 打赏
  • 举报
回复
1、我觉得不太可能,读文件这么基础的东西,不可能有问题,应该还是你代码的问题。
2、这个就不能确定了。CBX 是跨平台的,这个是DOS下才有的功能吧,CBX可能不支持。
Botton2008 2004-08-12
  • 打赏
  • 举报
回复
看来我只好放弃使用CBX了!
kerbcurb 2004-08-12
  • 打赏
  • 举报
回复
writeFile << dataline << "\n";
改成:
writeFile << dataline<<endl;
就可以了
"\n"不完全等同于endl,"\n"只是换行,endl是换行加上刷新,由此看来Borland的编译器更符合标准。
另外可以
//#include <string>
//#include <cstdlib>
kerbcurb 2004-08-12
  • 打赏
  • 举报
回复
另外,直接执行文件,ctrl+Z可以结束输入,文件只保存了第一个输入的字符。
COpyFRee 2004-08-12
  • 打赏
  • 举报
回复
一个不成熟的产品,没有必要去努力适应它,等等吧!
kerbcurb 2004-08-12
  • 打赏
  • 举报
回复
代码没有问题,CBX不能正确执行,感觉getline和readline没有返回正确值,加上全部路径也许行,有一帖子也说过类似问题,我加上全部路径可以,不加全部路径不行。
Botton2008 2004-08-12
  • 打赏
  • 举报
回复
以下是测试程序的源代码,请大家审查,看问题出在哪儿?

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <conio.h>

using namespace std;

int main()
{
ofstream writeFile("mat.dat", ios::out);
if (!writeFile) {
cerr << "oops: cannot create 'mat.dat'!";
exit(-1);
}

string dataline;
cout << "Please input data by line:\n";
while (getline(cin, dataline, '\n'))
writeFile << dataline << "\n";

ifstream readFile("mat.dat", ios::in);
if (!readFile) {
cerr << "oops: cannot open 'mat.dat'!";
exit(-2);
}

cout << "Read data by line from 'mat.dat':\n";
while (getline(readFile, dataline, '\n'))
cout << "Read: " << dataline << "\n";

cout << "\n\nPress any key to exit..." << endl;
getch();

return 0;
}
CB1013 2004-08-12
  • 打赏
  • 举报
回复
没用过,学习中。。。
我不懂电脑 2004-08-12
  • 打赏
  • 举报
回复
CBX还不成熟,等2.0再开发商业程序吧。
ch_builder 2004-08-12
  • 打赏
  • 举报
回复
我觉得楼主还是应该仔细学习学习了,说你胡说八道,有点对不起你,但有时你好象真在乱说
Botton2008 2004-08-12
  • 打赏
  • 举报
回复
代码应该没问题,同样的代码在Dev-C++和BCB 6.0环境下都能正常运行的!
3996906 2004-08-12
  • 打赏
  • 举报
回复
用法有点改变吧~~~~~~
yjy1001 2004-08-12
  • 打赏
  • 举报
回复
我赞同 JSP 大侠的说法

这样基础的东西,没理由没测试过
加载更多回复(1)

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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