| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1068 人关注过本帖
标题:请教io问题
只看楼主 加入收藏
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
 问题点数:0 回复次数:23 
请教io问题
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
void Set(char *name)
{
ofstream ofstr(name);
if(!name)
{
cerr<<"Error"<<endl;
exit(1);
}
char fname[10];
for(int i=0;i<3;i++)//输入3个文件名
{
cout<<"Please input goods:";
cin.getline(fname,10);
ofstr<<fname<<endl;
ofstr.close();
}
}
void main()
{
char *s,ch[15];
cout<<"Please input filename:";
s=ch;
cin>>s;
Set(s);
}
这个程序是:先创建一个文件,然后再往这个文件上写数据
请问:cout<<"Please input goods:";这一句一开始就运行两片是怎么回事情呢?而且从键盘输入的数据保存不到文件上,又是怎么一回事情呢?
搜索更多相关主题的帖子: void include 
2006-05-25 23:26
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 
Visual C++6.0 的getline函数的设计存在错误
C++ primer上也是这样说的

2006-05-26 20:39
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
以下是引用lw8484654在2006-5-25 23:26:00的发言:
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
void Set(char *name)
{
ofstream ofstr(name);
if(!name)
{
cerr<<"Error"<<endl;
exit(1);
}
char fname[10];
for(int i=0;i<3;i++)//输入3个文件名
{
cout<<"Please input goods:";
cin.getline(fname,10);
ofstr<<fname<<endl;
//ofstr.close();不要在这里关闭流
}
ofstr.close();
}
void main()
{
char *s,ch[15];
cout<<"Please input filename:";
s=ch;
cin>>s;
Set(s);
}
这个程序是:先创建一个文件,然后再往这个文件上写数据
请问:cout<<"Please input goods:";这一句一开始就运行两片是怎么回事情呢?而且从键盘输入的数据保存不到文件上,又是怎么一回事情呢?


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-26 20:47
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
得分:0 
老兄,这样还是没有用.
如果不用getline,有什么好方法没有啊
2006-05-27 00:26
偶成
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-3-4
收藏
得分:0 
ofstr.close();
放置在for()循环外面,输入的数据就能输出到文件了,
一开始就运行两遍,应该是因为第一次,我们的输入还没开始,就结束了,
你可以查看文件第一行,没输入就直接换行了.
我也不知道为什么?有说法是getline()函数本身的问题.

几年前,丢失了求知欲,游荡在游戏世界中. 而今寻找回了求知欲,希望通过自学充实自己.努力中...
2006-05-27 09:31
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
#include<iostream>
#include<fstream>
#include<iomanip>
#include<stdlib.h>
using namespace std;
void Set(char *name)
{
ofstream ofstr(name);
if(!name)
{
cerr<<"Error"<<endl;
exit(1);
}
char fname[10];
for(int i=0;i<3;i++)//输入3个文件名
{
cout<<"Please input goods:";
cin>>setw(10)>>fname;
cin.ignore(80,'\n');
ofstr<<fname<<endl;
//ofstr.close();不要在这里关闭流
}
ofstr.close();
}
int main()
{
char *s,ch[15];
cout<<"Please input filename:";
s=ch;
cin>>s;
Set(s);
system("pause");
return 0;
}

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-27 09:54
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
得分:0 
老兄,很奇怪啊!为什么加了这么一句话cin>>setw(10)>>fname;就没有出现跳过循环这种情况呢?
而且cin.ignore(80,'\n');这句话是什么意思啊?
2006-05-27 09:59
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
得分:0 
还有为什么要在循环外关闭呢?
2006-05-27 10:04
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

既然getline不行,我就换个咯,意思差不多
cin>>setw(10)>>fname;(但是有点不好,不能有空格)
cin.ignore(80,'\n');这句好象是没用,先前准备用给getline的
循环外关闭是因为你在循环里关闭了,又没打开,下次怎么关联流呢?怎么往里输入呢?


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-27 10:10
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
得分:0 
老兄,cin>>setw(10)>>fname,这句话的意思不是为文件名设置10个空格吗?为什么加了这句就没有直接进入第2个循环呢?
百思不得其解啊!
2006-05-27 11:15
快速回复:请教io问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023572 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved