2016-04-29 41 views

回答

0

好的..我找到了一個方法來做到這一點。謝謝安德烈.. 這是我該怎麼做..

#include<iostream> 
#include<vector> 
#include<string> 
#include <sstream> 
#include <iterator> 

using namespace std; 


int main() { 
     vector <vector <double> > v; 
     string s; 
     int count=0, ncol=0,check=0,nrow=0; 
     while(1) { 
       getline(cin,s); 
       if (s.length() == 0) 
         break; 
       for (int i=0; i<s.length(); i++) 
         if (s[i]==' ') 
           count++; 
       count++; 
       if (check==0) { 
         check++; 
         ncol=count; 
       } 
       if (count != ncol) { 
         cout << "ncol should be same in each row!" <<endl; 
         break; 
       } 
       v.resize(nrow+1); 
       istringstream buf(s); 
       istream_iterator<string> beg(buf), end; 
       vector<string> dummy(beg, end); 
       for (int i=0; i<ncol;i++) 
         v[nrow].push_back(stod(dummy[i])); 
       nrow++; 
       count=0; 
     } 
     //print the vector 'v' here 
} 
0

我一次只能讀取一行輸入行,直到一行爲空。

#include<iostream> 
#include<string> 
using namespace std; 
int main(){ 
    string s,s1; 
    do{ 
    getline (std::cin, s); 
    s1+=s; 
    }while(s.length()>0); 
cout<<s1; 
return 0; 
} 

反而增加了S1的,你需要編寫一個簡單的函數的字符串s分裂成數,存儲列數在第一步,測試,如果列數變化(拋出一個錯誤),每一步都增加行數,當然,將矩陣的元素存儲在一個向量中。一旦你完成,你可以構造矩陣

+0

謝謝。我只是這麼想的。但想知道是否還有更簡單的方法。 –