c++读取用逗号分割的数据
时间: 2024-10-11 21:07:49 浏览: 26
C++_C++_读取txt文档_txt内容读取_按空格分隔_按逗号分隔_
5星 · 资源好评率100%
在C++中,读取用逗号分割的数据通常涉及到文件操作和字符串处理。一种常见的方式是使用`std::getline`函数配合循环来逐行读取文件,并利用`std::stringstream`或者直接对读取到的字符串进行解析。下面是一个简单的示例:
```cpp
#include <fstream>
#include <sstream>
#include <vector>
// 函数来读取逗号分隔值
std::vector<std::string> readCSV(const std::string& filename) {
std::ifstream file(filename);
if (!file.is_open()) {
throw std::runtime_error("无法打开文件");
}
std::vector<std::string> data;
std::string line;
while (std::getline(file, line)) {
std::istringstream iss(line);
std::string token;
while (iss >> token, !iss.eof()) { // 当遇到换行符或EOF时跳出
data.push_back(token); // 将每个字段添加到向量中
if (iss.peek() == ',') {
iss.ignore(); // 跳过下一个逗号
}
}
}
file.close();
return data;
}
int main() {
try {
std::vector<std::string> values = readCSV("data.csv");
for (const auto& value : values) {
std::cout << value << " ";
}
} catch (const std::exception& e) {
std::cerr << "错误: " << e.what() << '\n';
}
return 0;
}
```
在这个例子中,我们首先尝试打开文件,然后逐行读取。对于每一行,我们使用`std::istringstream`将行转换成一个可以按逗号分割的流,然后遍历这个流,将每个元素添加到结果向量中。
阅读全文