我正在創建一個使用STL向量創建矩陣類的代碼。我希望用戶輸入(在控制檯)爲:如何在C++中從控制檯創建矩陣(使用矢量stl)? (即不知道矩陣的大小)
1 2 3
4 5 6
或
1 2 3
4 5 6
7 8 9
只是,而不是其他。即代碼應該能夠從輸入本身獲取行數和列數(而不是明確地詢問用戶)。
有人可以指導我嗎?
我正在創建一個使用STL向量創建矩陣類的代碼。我希望用戶輸入(在控制檯)爲:如何在C++中從控制檯創建矩陣(使用矢量stl)? (即不知道矩陣的大小)
1 2 3
4 5 6
或
1 2 3
4 5 6
7 8 9
只是,而不是其他。即代碼應該能夠從輸入本身獲取行數和列數(而不是明確地詢問用戶)。
有人可以指導我嗎?
好的..我找到了一個方法來做到這一點。謝謝安德烈.. 這是我該怎麼做..
#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
}
我一次只能讀取一行輸入行,直到一行爲空。
#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分裂成數,存儲列數在第一步,測試,如果列數變化(拋出一個錯誤),每一步都增加行數,當然,將矩陣的元素存儲在一個向量中。一旦你完成,你可以構造矩陣
謝謝。我只是這麼想的。但想知道是否還有更簡單的方法。 –
請分享你迄今嘗試過的請。 –