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

求教vc编译的一个问题

floppyfuck 发布于 2010-03-01 20:30, 606 次点击
这是我从《现代c++程序设计》中的一个编程例子
#include<iostream>
#include<string>
using namespace std;
int main()
{
    string name;
    string school;
    string favLang="c++,of course";
    cout<<"\n c++ programming student demographics";
    cout<<"\n Please enter your name:";
    getline(cin,name);
    cout<<"Please enter your school:";
    getline(cin,school);
    cout<<"\n Programming Student Data:"
        <<"\n Name:"<<name
        <<"\n School:"<<school
        <<"\n Favorite language:"<<favLang<<endl;
    return 0;
}
我在我的vc里运行却和书上的不一样 我的是在输入name 的时候就直接输入school了 在往下运行就是school那一样是空的了这是怎么回子事呀?
4 回复
#2
cnfarer2010-03-01 21:07
用GCC没问题的!
如果把输入改成:
cin>>name;
cin>>school;
VC和GCC就都一样了。


需要研究一下VC的getline
#3
floppyfuck2010-03-01 21:47
回复 2楼 cnfarer
谢谢,vc的getline()是不是跟iso的不一样呀?
#4
cnfarer2010-03-02 07:17
可能是它对标准的支持不够
#5
dong8207292010-03-02 10:41
getline()只接受两个参数:一个是输入流对象,另一个是string类型的对象。
如果你像这样书写:getline(cin,name,school)应该会报错。
然后我用vc6.0测试了这个程序,在要求输入name时一并输入school的内容,结果是这些内容全被视为name的值。
在name输入结束后依然会提示输入school内容。
因为getline()是文本输入,如果不结束输入,所有输入的内容将作为一个文本传递给string类型的变量。

因为我也是新手,不知道这样解释对不对。相互学习!
1