一个关于string的小问题,向大侠们求教了!!!
是这样的,比如定义一个string a = "this is a string", 然后cout<<a的话,屏幕上会显示"this is a string"没错,可是如果定义string b;然后用cin>>b,在屏幕上打入"this is a string",再用cout<<b的话,却只能显示"this"这一个词?它判定this后面为'\0'了吗?那为什么a却可以完整显示出来啊?如果想要读入有多个单词的string(像b那样的)应该怎么做呢?
大侠帮忙啊!
问题点数:50、回复次数:7Top
1 楼cunsh(村少)回复于 2006-03-02 19:29:17 得分 3
getline()Top
2 楼du51(郁郁思扬)回复于 2006-03-02 19:30:29 得分 4
getline(cin,b);Top
3 楼fangrk(加把油,伙计!)回复于 2006-03-02 19:51:42 得分 5
cin>>b;遇到空白字符就结束了(空格,制表,回车……)Top
4 楼zhNKUjw(淡淡的云彩悠悠的游)回复于 2006-03-02 20:02:07 得分 20
getline是最为简单的方法,不过以'\n'为终止符。
下面的可以输入包括'\n'在内的字符串,以EOF(windows下面是ctrl + Z)终止
#include <iostream>
#include <string>
using namespace std;
void main()
{
string result;
char ch;
while ( cin.get( ch ) )
{
result.push_back( ch );
}
cout << result << endl;
}
Top
5 楼ugg(逸学堂(exuetang.net))回复于 2006-03-02 20:06:59 得分 15
使用getline
string
getline(cin,str,'\n');// cin输入设备,str保存输入内容,'\n'提取符号。
或者使用
char AA[80];
cin.getline(AA,80);// 不过这个使用受字符数量限制。Top
6 楼corrupt(喜欢 睡在床板下 的思考)回复于 2006-03-02 20:27:31 得分 3
这个不是 string的 问题, 是 cin的问题Top
7 楼zsh_333(诸神的曙光)回复于 2006-03-02 20:33:44 得分 0
恩,明白了,谢谢楼上诸位了,分已散,呵呵Top




