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

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

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

我查找了CBX的帮助文件,但没能找到答案。谁能帮帮我啊?
...全文
413 21 打赏 收藏 转发到动态 举报
写回复
用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)
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 Node.js作为一个运行环境,其基础是Chrome的V8引擎,它最突出的优势在于能够支持JavaScript代码在服务器端执行,从而为网络应用程序创造了一个全新的执行平台。在Node.js生态中,文件系统的相关操作由fs模块承担,而fs.readFile作为其中的关键方法,专门用于实现文件内容的获取。本文旨在全面阐释fs.readFile方法的相关信息,包括其功能说明、语法结构、参数配置、应用范例以及源代码实现,以供那些需要在Node.js环境中进行文件操作的程序员参考。 fs.readFile方法具备异步特性,意味着它在执行文件读取任务时不会中断当前程序的运行流程,使得程序的其他部分能够同步执行。该方法的工作流程是:一旦调用,Node.js会立即反馈执行信号,然后在后台线程中执行文件读取任务。当文件读取任务完成后,Node.js会通过一个预设的回调函数来处理读取结果或识别错误。 fs.readFile方法的语法结构如下: fs.readFile(path[, options], callback) - path:一个必须的参数,其数据类型可以是字符串、Buffer或Uint8Array,用于指示文件的具体位置或文件描述符。 - options:一个可选参数,形式为一个对象,用于设定文件的编码格式及打开模式。该对象中可以包含encoding(字符编码,默认值为null,此时返回Buffer对象)和flag(文件打开模式,默认值为r,代表只读模式)。 - callback:一个必须的回调函数,在文件读取任务结束后被触发。若读取过程中出现错误,err参数将包含错误详情,否则为n...

13,872

社区成员

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

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