文件操作?
ifstream infile; //定义打开文件的标识
infile.open(pppp);//参数为要打开的文件名
pppp为丛键盘输入的一字符串;能否向上面那样把PPPP作为infile.open()的参数;;错误提示infine.open()中的参数应为const string *,现在要求infile.open()的参数既文件路径从键盘输入,而丛键盘输入的字符串有不是CONST STRING* 类型,该如何解决?
问题点数:60、回复次数:17Top
1 楼wangjue28(我爱我家)回复于 2002-05-23 21:37:40 得分 0
把键盘输入转化为string不就行了?Top
2 楼kof99th(小虫)回复于 2002-05-25 14:59:33 得分 15
char* p=new char[256];
cin>>p;
infile.open(p);
delete p;
不会有错吧?Top
3 楼vcexplorer(常青树)回复于 2002-05-28 21:51:04 得分 0
若想使ofstream out("d:\\zq\\zq1.txt");中的“d:\\zq\\zq1.txt”为从键盘上输入的文件路径,该如何办,我向这样:char *pathsel=new char[50];cin>>pathsel;ofstream out(pathsel);不行,该如何解决?Top
4 楼zhdleo(叮东)回复于 2002-05-28 23:56:28 得分 20
不会呀?
看:
#include <iostream>
#include <fstream>
using namespace std;
main()
{char *pathsel=new char[50];
cin>> pathsel;
cout << pathsel;
ofstream out(pathsel);
if (!out)
cout <<"Error";
else cout << "Right";
}
创建文件成功,输出Right!
照着你的“d:\\zq\\zq1.txt”可以成功创建!!!Top
5 楼zzxop(%&^%$(*&^)回复于 2002-05-29 01:02:27 得分 0
cout<<pathsel;有什么作用?Top
6 楼zhdleo(叮东)回复于 2002-05-29 01:03:37 得分 0
没什么,可以不要!
测试!
Top
7 楼Autom(见色生情)回复于 2002-05-29 10:26:32 得分 15
#include <fstream.h>
void main()
{
char * path=new char[50];
cin>>path;
cout<<path;
ofstream out(path);
if(!out) cout<<"error!"<<endl;
else cout<<"well"<<endl;
}
输入:d:\\zq.txt:
输出:d:\\zq.txt:error!
输入: d:\zq.txt:
输出:d:\zq.txt: well!
如果是从键盘上输入,只需一个'\',而在程序中打开,需要两个'\',是因为转义字符的问题。Top
8 楼zhdleo(叮东)回复于 2002-05-29 10:41:49 得分 0
我必须修正我的错误!
按照我试的结果
d:\zq.txt与d:\\zq.txt
都可以在D:\下成功创建zq.txt文件!!!!!!!!!!!
同意楼上的部分意见!
即在文件中需要两个'\'
创建文件,我觉得是无所谓!系统会自动识别的!Top
9 楼vcexplorer(常青树)回复于 2002-05-29 22:49:14 得分 0
谢谢大家的热情讨论,现在上面问题已经解决了,可又我又遇到一个新问题:从打开的文件in里取字符:in>>ch;然后输出到新建的文件里:out<<ch;每搁100(视情况而定)个字符换行,由于in文件大都为汉字,在取字符且需要换行时时就将汉字取为两个字符,分为两行输出,导致出现不希望的字符:下一行的字符全部出错;我想应该有办法解决,请各位再帮小弟一把!Top
10 楼zhdleo(叮东)回复于 2002-05-29 23:07:26 得分 10
文件是英文中文混合吗??
我觉得这样:
统计一行中的单一符个数!!最后一定要保证这个数为一个双数,
如果单数,那么100就要-1 99换行!!
这样应该不会了吧???
我的愚见!!Top
11 楼vcexplorer(常青树)回复于 2002-05-29 23:21:21 得分 0
TO:zhdleo(叮东)
你的想法我也考虑过,只是若能判断出ch是双字符的一部分,直接换行就可以,问题是如何判断出双字符?好象有函数能够解决。Top
12 楼vcexplorer(常青树)回复于 2002-05-29 23:28:09 得分 0
我的想法是:如果能判断出字符是双字符,直接换行就可以了,可问题是如何能判断?应该有函数能解决这个问题的;Top
13 楼zhdleo(叮东)回复于 2002-05-29 23:32:02 得分 0
这个我不知道!我帮不了你了,哎。。。。Top
14 楼pi1ot(-=\Pilot/=-)回复于 2002-05-29 23:47:28 得分 0
汉字的直是有规律的,不过我忘...
只是恍惚记得换成有符号整数是第一个字节小于0....Top
15 楼zhdleo(叮东)回复于 2002-05-30 23:27:11 得分 0
这个问题谁能帮帮忙!我也想知道!Top
16 楼vcexplorer(常青树)回复于 2002-06-01 09:40:29 得分 0
根据 pi1ot(pilot)所说:只是恍惚记得换成有符号整数是第一个字节小于0....,我用if(ch<0)语句,加上其他控制标记,解决了上述问题,文本文件能够按照要求排列。单总感觉不是太好。
Top
17 楼vcexplorer(常青树)回复于 2002-06-01 10:10:47 得分 0
欢迎大家继续讨论!Top
18 楼vcexplorer(常青树)回复于 2002-06-01 10:53:26 得分 0
还有,如何删除一个用上述方式建立的文本文件?Top




