注册 登录
编程论坛 C++教室

[求助]fstream 的输出输入目录在哪???

C123 发布于 2007-08-22 14:05, 2500 次点击

cout<<"Entert the name of the input file:";
string inputFileName;
getline(cin,inputFileName);

ifstream inStream;
inStream.open(inputFileName.data());
assert(inStream.is_open());



cout<<"Enter the name of the output file:";
string outputFileName;
getline(cin,outputFileName);

ofstream outStream(outputFileName.data());
assert( outStream.is_open() );



例如我要读入 1 2 3 4 5 6
该在哪创建一个inputName? 和输出名字 outputFileName?
VC6.0
35 回复
#2
maoguoqing2007-08-22 14:12

当前目录,就是你的工程目录

#3
C1232007-08-22 15:25
以下是引用maoguoqing在2007-8-22 14:12:43的发言:

当前目录,就是你的工程目录

刚刚学到,不懂啊
书上没流程。。。。

#4
maoguoqing2007-08-22 17:19
你的源文件保存的地方
#5
C1232007-08-22 23:53
以下是引用maoguoqing在2007-8-22 17:19:05的发言:
你的源文件保存的地方

怎么还是读取不到的,晕。
保存源文件的几个文件夹都放过,
文件是: test.dat 读取时也是test.dat
怎么不行啊 晕。

[此贴子已经被作者于2007-8-22 23:53:55编辑过]

#6
maoguoqing2007-08-23 12:22
那用inputFileName.c_str()式一下
#7
C1232007-08-23 13:26
不行啊,是不是我用的格式不对啊?
我用写字板写数字上去的,然后就改文件名
#8
maoguoqing2007-08-24 11:25

你把完整的代码贴上来吧

#9
C1232007-08-24 13:12

include<fstream>
#include<iostream>
#include<string>
#include<cassert>
#include<cfloat>
using namespace std;

int main()
{
cout<<" This program computes the number, maximum,minimum,and\n"
<<"average of an input list of numbers in one file,\n"
<<"and places its results in another file.\n\n";
//--------------------------输入部分----------------------------

cout<<"Entert the name of the input file:";
string inputFileName;
getline(cin,inputFileName);

ifstream inStream;
inStream.open(inputFileName.data());
assert(inStream.is_open());

int count=0;
double reading,
maximum=DBL_MIN,
minimum=DBL_MAX,
sum=0;

for(;;){
inStream>>reading;
if( inStream.eof() )
break;
count++;
sum+=reading;
if (reading<minimum)
minimum=reading;
if(reading>maximum)
maximum=reading;
}
inStream.close();

//-------------------------------------------

cout<<"Enter the name of the output file:";
string outputFileName;
getline(cin,outputFileName);
ofstream outStream;
outStream.open(outputFileName.data());
assert( outStream.is_open() );

outStream<<"\n-->There were"<<count<<"values";

if(count>0)
outStream<<"\n\tranging from"<<minimum
<<" to "<<maximum
<<"\n\tand their average is " <<sum/count
<<endl;

outStream.close();
cout<<"processing complete.\n";
return 0;
}

#10
C1232007-08-24 13:14
只是读取不到要打开的文件
#11
maoguoqing2007-08-24 13:55
文件打开没有错吧你?你输入文件里面存的是不是double型的数据哦?

[此贴子已经被作者于2007-8-24 13:56:33编辑过]


#12
aipb20072007-08-24 13:57

getline(cin,inputFileName); //cin >> inputFileName就好

ifstream inStream;
inStream.open(inputFileName.data()); //inputFileName.c_str() data不对


另外ofstream也是一样改

#13
maoguoqing2007-08-24 14:00
以下是引用aipb2007在2007-8-24 13:57:04的发言:

getline(cin,inputFileName); //cin >> inputFileName就好

ifstream inStream;
inStream.open(inputFileName.data()); //inputFileName.c_str() data不对


另外ofstream也是一样改

data可以的。getline也可以,只是不要输入除文件名和回车以外的任何其他符号

[此贴子已经被作者于2007-8-24 14:07:20编辑过]

#14
C1232007-08-24 14:26
[IMG]http://photo.store.qq.com/http_imgload.cgi?/rurl2=b7aed8d777e2d2bfd4c4c0615309b80ed54ab6520ab5d7fb6d21c841d01d6152a11c80c2e2c208fb36f5421a7537ae6f3715d78a4554174b1f9d1f1dde1705e452d47ea8084b8bb77e530b0b0d1334045eeec634[/IMG]

会不会是文件那里错了啊?
#15
maoguoqing2007-08-24 14:28

你是整数,当然读不成功,改成11.0这种形式看看

#16
C1232007-08-24 14:35
[IMG]http://photo.store.qq.com/http_imgload.cgi?/rurl2=e0018c351b0f21c6b7b0009f04cc493cd6ee1939e1fb276746205cacdead952af9dbfb5b0b38b4520eb50c8deec4b5a438e06e2cf696284561418028351548a72e2dc3699a214a23aff1087f8ae7196d965754e0[/IMG]

是打开都错误了吧?

改成11.0 12.0 这种形式还是打不开的

[此贴子已经被作者于2007-8-24 14:39:29编辑过]

#17
maoguoqing2007-08-24 14:42
只有本站会员才能查看附件,请 登录


晕了我。不知道是不是你放的地方不对
#18
C1232007-08-24 14:51
以下是引用C123在2007-8-24 14:26:13的发言:
[IMG]http://photo.store.qq.com/http_imgload.cgi?/rurl2=b7aed8d777e2d2bfd4c4c0615309b80ed54ab6520ab5d7fb6d21c841d01d6152a11c80c2e2c208fb36f5421a7537ae6f3715d78a4554174b1f9d1f1dde1705e452d47ea8084b8bb77e530b0b0d1334045eeec634[/IMG]

会不会是文件那里错了啊?

你的这里是怎样的看下我哪错了

#19
maoguoqing2007-08-24 14:54
放的地方好像没错,你用的7.0?
你输入文件名以后,把文件名再输出来看一下看是否正确
#20
C1232007-08-24 15:00
用的是VC 6.0啊 真不知道哪错了  
#21
maoguoqing2007-08-24 15:01
cout&lt;&lt;inputFileName.data();看一下这个文件名是否被正确的读取了
#22
C1232007-08-24 15:03
试过输出来,真确的````
#23
C1232007-08-24 15:05
以下是引用maoguoqing在2007-8-24 15:01:16的发言:
cout<<inputFileName.data();看一下这个文件名是否被正确的读取了

没被读取吧。
assert(inStream.is_open()); //这句显示他打不开这文件啊

#24
aipb20072007-08-24 15:31
没什么错啊

data真的可以?你换成c_str()试了吗?

data返回的是c字符穿,但是没有空字符结尾的!
#25
C1232007-08-24 15:43
以下是引用aipb2007在2007-8-24 15:31:24的发言:
没什么错啊

data真的可以?你换成c_str()试了吗?

data返回的是c字符穿,但是没有空字符结尾的!

我换成c_str()也试过了,打不开文件
用VC 2005也一样就是打不开

#26
C1232007-08-24 15:45
代码没错的,就是打不开输入和输出文件
#27
aipb20072007-08-24 15:45
不可能吧,我运行了一切正常

你文件名是什么?输入的时候要加后缀哦?

比如

data.txt

输入就要这样哦?

[此贴子已经被作者于2007-8-24 15:46:50编辑过]

#28
aipb20072007-08-24 15:48
我知道你那里错了

你输入的时候,输入:

inputFileName.dat.txt

你文件是txt,你没加后缀!
#29
C1232007-08-24 15:50
输出文件可以打开
是不是输入文件里面的数有错误??
#30
aipb20072007-08-24 15:54
你试试我28楼说的

因为一般.txt后缀要被隐藏,你修改文件名为.dat实际还是没改变后缀
#31
C1232007-08-24 16:06
以下是引用aipb2007在2007-8-24 15:54:32的发言:
你试试我28楼说的

因为一般.txt后缀要被隐藏,你修改文件名为.dat实际还是没改变后缀

加了txt后缀都不变格式的

.dat后缀也没变格式

[此贴子已经被作者于2007-8-24 16:07:04编辑过]

#32
aipb20072007-08-24 16:10

我猜大概是这个原因,你试下吧,最好你把文件名直接用txt,不要改.dat

再不行就没办法了,反正我是可以运行的!

#33
C1232007-08-24 16:11
以下是引用aipb2007在2007-8-24 15:48:41的发言:
我知道你那里错了

你输入的时候,输入:

inputFileName.dat.txt

你文件是txt,你没加后缀!

哈哈 可以了,还要加这个后缀 晕啊。

#34
aipb20072007-08-24 16:15
回复:(C123)以下是引用aipb2007在2007-8-24 15:48:...
就这个问题,搞了这么半天。

我看了你截图,才发现你系统的文件后缀名都是隐藏的,你直接改是修改不到文件后缀的。

123.dat.txt

123.dat

123.txt


汗,搞搞明白啊!呵呵
#35
C1232007-08-24 16:15
多谢两位帮忙
#36
maoguoqing2007-08-24 16:33
晕了,你电脑,你电脑没显示已知类型文件的扩展名
那次我们学校那个竞赛也是这种
1