用c++写一个读取txt文件第三列的数据并存到返回值类型为double的vector中,每列之间空格隔开,
时间: 2024-11-24 20:43:08 浏览: 14
在C++中,你可以使用标准库中的fstream和string来读取.txt文件,并利用STL容器如vector存储数据。这里是一个简单的示例,假设文本文件的第一列是数字,我们只关注第三列并转换为double类型:
```cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
std::vector<double> read_data_from_file(const std::string& filename) {
std::ifstream file(filename);
if (!file.is_open()) {
throw std::runtime_error("Failed to open the file");
}
std::vector<double> data;
std::string line;
while (getline(file, line)) {
std::istringstream iss(line);
std::string cell;
int column = 0;
// Read until we reach the third column
while (getline(iss, cell, ' ')) {
if (column == 2) { // Assuming third column is at index 2 (zero-based)
double value;
iss >> value; // Convert string to double
data.push_back(value);
break;
}
++column;
}
}
file.close();
return data;
}
int main() {
try {
std::vector<double> numbers = read_data_from_file("input.txt");
for (const auto& num : numbers) {
std::cout << num << " ";
}
std::cout << "\n";
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << '\n';
}
return 0;
}
```
在这个例子中,`read_data_from_file`函数会尝试打开指定的文件,然后逐行读取,直到遇到第三个用空格分隔的单元格,将其内容转换为double并添加到vector中。如果文件打开失败或格式不符合预期,它将抛出异常。
阅读全文