用c++将TXT中每一行内不同类型数据存储在一个vector中
时间: 2024-02-22 18:59:01 浏览: 106
可以使用C++的文件输入输出流和字符串流来实现这个功能。具体步骤如下:
1. 打开TXT文件,读取每一行数据。
2. 使用字符串流istringstream将每一行数据按照空格分割成单个数据。
3. 判断数据类型,将其存储在不同类型的vector中。
下面是一个简单的示例程序:
```c++
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main() {
ifstream fin("data.txt"); // 打开文件
string line;
vector<int> intVec;
vector<double> doubleVec;
vector<string> stringVec;
while (getline(fin, line)) { // 读取每一行数据
istringstream ss(line);
string token;
while (ss >> token) { // 按照空格分割数据
if (isdigit(token[0])) { // 判断数据类型
if (token.find('.') != string::npos) {
doubleVec.push_back(stod(token)); // 存储double类型数据
} else {
intVec.push_back(stoi(token)); // 存储int类型数据
}
} else {
stringVec.push_back(token); // 存储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
```
阅读全文