C++从txt中读取矩阵

1. 分析

给定一个txt数据,中间由空格分割,目标是读取数据,以便后续使用。由于不清楚数据大小,为了方便管理,采用vector容器作为存贮对象。

 

 

 

2. 程序

下面是读取的方法,读取之后,存入v中

 1 void file_to_vector(string filename, vector<vector<double>> &v) {
 2     //1.包含头文件
 3     // 
 4     //2.创建流对象
 5     ifstream ifs;
 6     vector<double> v_temp;
 7 
 8     //3.指定打开方式
 9     ifs.open("data.txt", ios::in);
10     if (!ifs.is_open()) {
11         cout << "文件打开失败" << endl;
12     }
13 
14     //4.读内容
15     string buf;
16     int k;
17     double temp;
18 
19     while (getline(ifs, buf)) {
20         k = 0;
21         v_temp.clear();
22         for (int i = 0; i < buf.size(); i++) {
23             if (buf[i] == ' ' || buf[i] == '\n' || i == buf.size() - 1) {
24                 temp = stod(buf.substr(k, i-k));
25                 v_temp.push_back(temp);
26                 k = i + 1;
27             }
28         }
29         v.push_back(v_temp);
30     }
31 }

下面给出打印v中每个元素的方法

 1 void printVecotor(vector<vector<double> > &v) {
 2     for (vector<vector<double> >::iterator it = v.begin(); it < v.end(); it++) {
 3         for (vector<double>::iterator vit = (*it).begin(); vit < (*it).end(); vit++) {
 4             cout << setw(10) << setiosflags(ios::left) << *(vit) << " ";
 5         }
 6          7         cout << endl;
 8     }
 9 
10 }

 

3. 测试

下面给出程序测试结果

 

 

posted @ 2023-03-11 19:19  空空小谢  阅读(620)  评论(0)    收藏  举报