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

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

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

我查找了CBX的帮助文件,但没能找到答案。谁能帮帮我啊?
...全文
237 21 打赏 收藏 举报
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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)
发帖
C++ Builder

1.3w+

社区成员

C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
帖子事件
创建了帖子
2004-08-12 09:23
社区公告
暂无公告