【问题标题】:read strings from input till EOF从输入读取字符串直到 EOF
【发布时间】:2014-05-09 16:03:38
【问题描述】:

我已经浏览了很多关于 SO 的帖子,但我仍然无法解决问题。
我必须阅读:

文字
图案1
模式2

从标准输入,有很多text and patterns
代码

string t,p1,p2;
while(getline(cin, t))
{
    cin>>p1;
    cin>>p2;

    cout<<"text is = "<<t<<"\np1 is = "<<p1<<"\np2 is = "<<p2<<endl;
}  

输入文件

锤子
火腿
梅尔
戈戈阿

z
戈戈阿
g
o

输出

文字是=锤子
p1 是 = 火腿
p2 是 = mer
文字是 =
p1 是 = gogoa
p2 是 = 去
文字是 =
p1 是 = z
p2 是 = gogoa
文字是 =
p1 是 = g
p2 = o

【问题讨论】:

    标签: c++ io eof getline


    【解决方案1】:

    试试这个:

    string t,p1,p2;
    while(getline(cin, t))
    {
        cin>>p1;
        cin>>p2;
    
        getchar();  //removes '\n' from stdin
    
        cout<<"text is = "<<t<<"\np1 is = "<<p1<<"\np2 is = "<<p2<<endl;
    } 
    

    【讨论】:

      【解决方案2】:

      如果您在 cin &gt;&gt; something 之后使用 getline,则需要将换行符从缓冲区中刷新。

      #include <iostream>
      #include <limits>
      using namespace std;
      
      int main() {
          string t,p1,p2;
          while(getline(cin, t))
          {
              cin>>p1;
              cin>>p2;
      
              cout<<"text is = "<<t<<"\np1 is = "<<p1<<"\np2 is = "<<p2<<endl;
      
              cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n'); // Dump everything until newline
          }
          return 0;
      }
      

      http://ideone.com/b7Xj6o

      更多:https://stackoverflow.com/a/10553849/1938163

      【讨论】:

        【解决方案3】:

        你可以试试这样的:

        #include <vector>
        
        vector<string> vs;
        int i;
        while(getline(cin, t)) {
            vs.push_back(t);
        }
        
        for(i = 0; i < (vs.size / 3); i++) {
            cout <<"text is " << vs[0 + (3*i)] << "\np1 is " << vs[1 + (3*i)] << "\np2 is " << vs[2 + (3*i) << endl;
        }
        

        【讨论】:

          猜你喜欢
          • 2017-10-18
          • 1970-01-01
          • 2018-04-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-23
          • 2014-11-10
          相关资源
          最近更新 更多