现在的位置: 首页 > 综合 > 正文

c++_getline()和istringstream的用法

2013年12月10日 ⁄ 综合 ⁄ 共 1547字 ⁄ 字号 评论关闭

/**

  getline(int,s)为从输入文件流中读入一行数据,放入string变量s中.

   由于整行地读入,读入到s中时,文件中的每个换行符都丢掉了.

*/

 

//istringstream对象可以绑定一行字符串,然后以空格为分隔符把该行分隔开来。

 

运行环境: C++Builder6

 

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

//---------------------------------------------------------------------------

 

#pragma argsused

#include<iostream>

#include<fstream>

#include<sstream>

#include<vector>

using namespace std;

 

vector<vector<int> > input();

void mySort(vector<vector<int>>& a);

void print(constvector<vector<int> >& a);

int main(int argc, char* argv[])

{

//创建一个二维向量

vector<vector<int> > a =input();

//对向量进行排序

mySort(a);

print(a);

 

system("pause");

return 0;

}

 

//---------------------------------------------------------------------------

/**

初始化向量

*/

vector<vector<int> > input(){

 

ifstream in("aaa.txt");

vector<vector<int> > a;

/**

  getline(int,s)为从输入文件流中读入一行数据,放入string变量s中.

   由于整行地读入,读入到s中时,文件中的每个换行符都丢掉了.

*/

for(string s; getline(in, s);){

  vector<int> b;

  //istringstream对象可以绑定一行字符串,然后以空格为分隔符把该行分隔开来。

  istringstream sin(s);

  for(int ia; sin>>ia;){

      b.push_back(ia);

   }

  a.push_back(b);

}

return a;

}

//---------------------------------------------------------------------------

 

void mySort(vector<vector<int>>& a){

 

for(int pass = 1; pass<a.size();pass++){

  for(int i=0; i<a.size()-pass; i++){

    if(a[i+1].size()<a[i].size()){

      a[i].swap(a[i+1]);

    }

   }

}

}

   //---------------------------------------------------------------------------

void print(constvector<vector<int> >& a){

for(int i=0; i<a.size(); i++){

   for(int j=0;j<a[i].size(); j++){

     cout<<a[i][j]<<" ";

    }

   cout<<endl;

}

}

抱歉!评论已关闭.