首页 新闻 会员 周边

一个很弱智的C++输出问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-10-11 20:20
#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    int i=10;
    while(cin>>s)
    {getline(cin,s);
    cout<<s<<endl;
    i--;}
    return 0;
    
    }

加了这个while循环之后,输出就有问题了,比如输入Y = 3(中间都有空格),输出的结果是  = 3,前面的字母Y就没有了,这是怎么回事呢?

C++
响^_^的主页 响^_^ | 初学一级 | 园豆:110
提问于:2012-10-10 20:00
< >
分享
最佳答案
0

已经被cin>>s 读取了空格前面的字符。

再弄个变量来接收:

string s;
string temp;
int i=10; while(cin>>temp) {getline(cin,s);
s=temp+s; cout
<<s<<endl; i--;}
收获园豆:10
向往-SONG | 老鸟四级 |园豆:4853 | 2012-10-10 20:55

谢谢!!解决了!

但是还是没太明白原因。。。能再讲详细一点吗?多谢多谢!

响^_^ | 园豆:110 (初学一级) | 2012-10-10 21:06

@响O(∩_∩)O: 

cin>>s 也是接收输入流中的字符串,遇到空白字符就结束了(仅把Y取走了),所以后面就取不到Y啦。

向往-SONG | 园豆:4853 (老鸟四级) | 2012-10-10 21:45

@向往-SONG: 哦,明白了~~非常感谢您的耐心讲解!

响^_^ | 园豆:110 (初学一级) | 2012-10-11 20:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册