首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 帮看下这个问题
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-15 18:37:51 楼主
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <set>
    #include <vector>
    using namespace std;
    int main()
    {
    vector <string> vec;
    set <string> se;
    string s1,s2,s3;
    while(1)
    {
    cout < <"请输入未来要看的书名:";
    getline(cin,s1);//cin>>s1;
    vec.push_back(s1);
    //cout < <endl;
    //string cho1;
    string cho1;
    cout < <"你是否还要输入未来要看的书名yes/no:";
    cin>>cho1;
    cout < <endl;
    if(cho1=="yes" ¦ ¦cho1=="YES")
    continue;
    else
    break;
    }
    return 0;
    }

    帮运行一下这个程序,为什么第2个cho1的输入被自动的取消了??
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-15 18:53:101楼 得分:0
    对于getline是否将回车符留在缓冲区我忘了,
    于是猜想可能是因为第一次产生的回车符所造成的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-15 19:10:392楼 得分:0
    问题出在getline(cin,s1)这一行,如果把这行替换为:
    cin>>s1问题就解决了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gofqjyie
    • 等级:
    发表于:2008-06-15 19:13:043楼 得分:0
    getline应该是不清缓存区的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-15 19:22:344楼 得分:0
    用GDB调试了一下,第二次s1的输入是空值,也不是回车!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-15 19:29:215楼 得分:0
    C/C++ code
    #include <iostream> #include <string> #include <fstream> #include <set> #include <vector> using namespace std; int main() { vector <string> vec; set <string> se; string s1,s2,s3; while(1) { cout < <"请输入未来要看的书名:"; [color=#FF0000]getline(cin,s1,'\n');//cin>>s1; [/color] vec.push_back(s1); //cout < <endl; //string cho1; string cho1; cout < <"你是否还要输入未来要看的书名yes/no:"; cin>>cho1; cout < <endl; if(cho1=="yes" ¦ ¦cho1=="YES") continue; else break; } return 0; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-15 19:30:166楼 得分:0
    C/C++ code
    #include <iostream> #include <string> #include <fstream> #include <set> #include <vector> using namespace std; int main() { vector <string> vec; set <string> se; string s1,s2,s3; while(1) { cout < <"请输入未来要看的书名:"; getline(cin,s1,'\n');//cin>>s1; // 这样试试呢。 vec.push_back(s1); //cout < <endl; //string cho1; string cho1; cout < <"你是否还要输入未来要看的书名yes/no:"; cin>>cho1; cout < <endl; if(cho1=="yes" ¦ ¦cho1=="YES") continue; else break; } return 0; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-16 17:41:087楼 得分:0
    不行呀,哪位高手帮答一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-19 09:32:378楼 得分:0
    用fflush()函数试试呢。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved