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

结束cmd string输入问题

charderkk 发布于 2011-02-24 23:34, 1003 次点击
int main(){
      string s;
      cout<<"Please input a sentence:"<<endl;
      
      while(getline(cin,s)){
          vector<string> sentence=split(s);//split 是一个分割句子中单词的函数
      for(i=0;i!=sentence.size();++i)
          cout<<sentence[i]<<endl;
      }
      cout<<endl;
      cout<<"Please input a sentence:"<<endl;

      while(cin>>s)
           cout<<s<<endl;
     
      return 0;
  }
为什么在cmd中执行 while(getline(cin,s)) 这个循环总是不能退出,想问下如何 让getline(cin,s) 是假?
3 回复
#2
rjsp2011-02-25 08:25
windows CTRL+Z
Linux CTRL+D
其它系统自己去查
#3
homelove2011-02-25 09:43
getline(cin,s)的返回值总是basic_istream类型,在这里返回值总是cin。
要结束while循环的话,可以判断cin的状态,可以用cin.eof()判断是否到了文件结尾,文件结尾在windows下是CTRL+Z.
贴上我的代码:
程序代码:
#include <string>
#include <iostream>
#include <vector>

using namespace std ;

int main(){
    string s;
    cout<<"Please input a sentence:"<<endl;

    while(!getline(cin,s).eof()){
        vector<string> sentence=split(s);//split 是一个分割句子中单词的函数
        for(i=0;i!=sentence.size();++i)
            cout<<sentence[i]<<endl;
    }
    cout<<endl;
    cout<<"Please input a sentence:"<<endl;

    cin.clear();
    while(cin>>s)
        cout<<s<<endl;

    return 0;
}


#4
gsdgold2011-02-28 22:46
按ctrl+z就结束输入了
1