| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 700 人关注过本帖
标题:不好意思,问个菜鸟问题,关于char类型的变量
只看楼主 加入收藏
aaron2913
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-19
收藏
 问题点数:0 回复次数:7 
不好意思,问个菜鸟问题,关于char类型的变量
我的一个程序中有这样一个问题,我把它简化出来
void main(void)
{
char a[100];
cin>>a;
cout<<a<<endl;
}
然后运行,在屏幕中输入字符, 如果我输入没有空格的字符如:thisisatest然后按回车,没问题立即显示:thisisatest
但是如果输入带有空格的字符如:this is a test,则只会显示this,而空格后面的字符一概不会显示,但是如果直接在程序中给字符数组a中某一个元素赋值为空格,比如:a[1]=‘ ’;然后打印在屏幕上没有问题。这是怎么回事? 是不是在用cin语句输入字符变量时,在屏幕中输入空格系统会认为什么也没有输入吗?

我在作一个自己的string类,其中要重载操作符cin>> 想要达到的效果如下:
void main(void)
{
string a;
cin>>a;
cout<<a<<endl;
}
在屏幕中输入this is a test 应该立即显示this is a test,而不是this

请各位帮帮忙吧,有什么办法吗?
搜索更多相关主题的帖子: 变量 char 类型 
2007-07-29 22:15
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 

[此贴子已经被作者于2007-7-29 22:57:59编辑过]



2007-07-29 22:55
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
那你在这样呢

char a[100],b[100];
cin>>a>>b
cout<<a<<b;
他就会输出this is 了


默认情况下空格是输入数据之间的间隔符

天行健,君子以自强不息!!QQ:68660681
2007-07-30 00:33
foreverlh
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-4-29
收藏
得分:0 
大一新生琢磨一夜后的结果。。。经测试使用成功。
#include<iostream.h>
const int MAXSIZE=100; //字符串最大长度
class string
{
private:
char ch[MAXSIZE];
public:
friend ostream &operator<<(ostream &,string &); //使用友元函数重载运算符<<和>>
friend istream &operator>>(istream &,string &);
};
ostream &operator<<(ostream &stream,string &str)
{
stream<<str.ch<<endl;
return stream;
}
istream &operator>>(istream &stream,string &str)
{
stream.getline(str.ch,MAXSIZE); //在此使用stream类的成员函数
//格式为 stream.getline(字符串,最大长度)
return stream; //就可以接受带有空格的字符串了
}
void main()
{
string a;
cin>>a;
cout<<a;
}


另外我请楼主与众位高手教我一个方法。我本想采用动态存储的方法。如果不采用编译器自带的string类,构造函数应该怎么写?
昨晚被逼无奈改用一维数组,此法浪费大量存储空间,各位有更好的想法可以提出

2007-07-30 06:13
aaron2913
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-19
收藏
得分:0 
果然好使,谢啦!

如果用动态存储的方式,是不是只能用链表的方式啊?
2007-07-30 10:01
sunweihang
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-7-25
收藏
得分:0 
#include<iostream.h>
void main()
{
char a[100];
cout<<"请输入字符串"<<endl;
cin.getline(a,100);
cout<<a<<endl;
}

用我这段代码,很简单阿。为什么要用类呢?
2007-07-30 16:27
virusswb
Rank: 1
等 级:新手上路
威 望:1
帖 子:342
专家分:0
注 册:2005-8-6
收藏
得分:0 
就的使用cin.getline();

jorden008@
2007-07-30 16:32
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
回复:(foreverlh)大一新生琢磨一夜后的结果。。。经...
你可以在类里面放一个足够大的static的缓冲区,先把串放入缓冲区计算长度再申请空间。
2007-07-30 16:51
快速回复:不好意思,问个菜鸟问题,关于char类型的变量
数据加载中...
 
   



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

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