在C++里将TXT中每一行内不同类型数据存储于同一个vector中
时间: 2024-02-22 10:59:03 浏览: 141
可以使用C++中的`vector<string>`来存储每一行数据,然后再根据需要将其转换为不同类型的数据。具体步骤如下:
1. 打开TXT文件,读取每一行数据。
2. 将每一行数据存储在一个`vector<string>`中。
3. 根据需要将`vector<string>`中的数据转换为不同类型的数据,存储在同一个`vector`中。
下面是一个简单的示例程序:
```c++
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main() {
ifstream fin("data.txt"); // 打开文件
string line;
vector<vector<string>> data; // 存储每一行数据的vector
while (getline(fin, line)) { // 读取每一行数据
istringstream ss(line);
string token;
vector<string> row; // 存储每一行数据的vector
while (ss >> token) { // 按照空格分割数据
row.push_back(token); // 将数据存储到每一行数据的vector中
}
data.push_back(row); // 将每一行数据的vector存储到总的数据vector中
}
vector<int> intVec;
vector<double> doubleVec;
vector<string> stringVec;
// 将总的数据vector中的数据转换为不同类型的数据
for (vector<string> row : data) {
for (string s : row) {
if (isdigit(s[0])) { // 判断数据类型
if (s.find('.') != string::npos) {
doubleVec.push_back(stod(s)); // 存储double类型数据
} else {
intVec.push_back(stoi(s)); // 存储int类型数据
}
} else {
stringVec.push_back(s); // 存储string类型数据
}
}
}
// 输出结果
cout << "Integers: ";
for (int i : intVec) {
cout << i << " ";
}
cout << endl;
cout << "Doubles: ";
for (double d : doubleVec) {
cout << d << " ";
}
cout << endl;
cout << "Strings: ";
for (string s : stringVec) {
cout << s << " ";
}
cout << endl;
return 0;
}
```
假设data.txt中的数据为:
```
1 2.3 hello
4 5.6 world
```
运行程序后的输出结果为:
```
Integers: 1 4
Doubles: 2.3 5.6
Strings: hello world
```
阅读全文