读书人

二维向量的输入解决方法

发布时间: 2012-03-17 19:06:28 作者: rapoo

二维向量的输入
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std ;

typedef vector<int> VI ;
typedef vector<VI> VVI ;

void print(const VI& result) ;

int input(VVI& data)
{
ifstream in("xswby.txt") ;
//data.reserve(1100) ;

int i = 0 ;

for(string s ; getline(in,s) ; i++)
{
int tmp ;

for(istringstream sin(s) ; sin>>tmp ; )
{
data[i].push_back(tmp) ;
}
}

cout<<"输入"<<endl ;

for(int k = 0 ; k < i-1 ; k++)
print(data[k]) ;

return (i-1) ;
}

void print(const VI& result )
{
for(unsigned int i = 0 ; i < result.size() ; i++)
{
cout<< result[i] << " " ;
}

cout<<endl ;

}


int main()
{
VVI data ;
int len = 0;

len = input(data) ;

return 0 ;

}


[解决办法]
http://www.cplusplus.com/reference/iostream/istringstream/

http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/

C/C++ code
#include <iostream>#include <fstream>#include <sstream>#include <algorithm>#include <string>#include <vector>using namespace std ;typedef vector<int> VI ;typedef vector<VI> VVI ;void print(const VI& result) ;int input(VVI& data){    ifstream in("a.txt") ;    //data.reserve(1100) ;    //最好加个判断     if(!in)    {        cout<<"input error filename;";        return 0;    }    int i = 0 ;    for(string s ; getline(in,s) ; i++)    {        int tmp ;          /*        //tmp int类型 istringstream重载的>>的右操作数是char型的        for(istringstream sin(s) ; sin>>tmp ; )        {            data[i].push_back(tmp) ;        }        自己写个将字符转换为数字的吧 可以搜索        */    }    cout<<"输入"<<endl ;    for(int k = 0 ; k < i-1 ; k++)        print(data[k]) ;    return (i-1) ;}void print(const VI& result ){    for(unsigned int i = 0 ; i < result.size() ; i++)    {        cout<< result[i] << " " ;    }    cout<<endl ;}int main(){    VVI data ;    int len = 0;    len = input(data) ;    system("pause");    return 0 ;} 

读书人网 >C++

热点推荐