c++一行一行读取TXT中用逗号隔开的整数和浮点数怎么办
时间: 2024-10-08 10:14:08 浏览: 30
在C++中,你可以使用文件流(fstream)逐行读取TXT文件,并利用getline()函数获取每一行的内容,然后使用`std::stringstream`或者直接处理字符串来解析逗号分隔的数值。这里是一个简单的示例:
```cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
std::vector<std::tuple<int, float>> read_csv(const std::string& filename) {
std::ifstream file(filename);
if (!file.is_open()) {
throw std::runtime_error("Failed to open the file");
}
std::vector<std::tuple<int, float>> data;
std::string line;
while (std::getline(file, line)) {
std::istringstream iss(line);
int int_val;
float float_val;
if (!(iss >> int_val >> std::ws >> float_val)) { // ws忽略空格,防止因前导或尾随空格导致解析错误
std::cerr << "Invalid value in line: " << line << '\n';
continue;
}
data.push_back(std::make_tuple(int_val, float_val));
}
return data;
}
int main() {
try {
auto numbers = read_csv("your_file.txt");
for (const auto &num : numbers) {
int int_num = std::get<0>(num); // 第一个元素
float float_num = std::get<1>(num); // 第二个元素
std::cout << "Int: " << int_num << ", Float: " << float_num << "\n";
}
} catch (const std::exception &e) {
std::cerr << e.what() << '\n';
}
return 0;
}
```
这个程序会将每个含有逗号分隔整数和浮点数的行转换成一个元组添加到向量中。如果某行数据不符合预期格式,程序会跳过该行并打印一条错误信息。
阅读全文