二维向量的输入
#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 ;}