• 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发

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

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

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

我查找了CBX的帮助文件,但没能找到答案。谁能帮帮我啊?
...全文
206 点赞 收藏 21
写回复
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 大侠的说法

这样基础的东西,没理由没测试过
回复 点赞
发动态
发帖子
C++ Builder
创建于2007-08-02

2563

社区成员

10.2w+

社区内容

C++ Builder相关内容讨论区
社区公告
暂无公告