c++读取文本时,有的行有四个字符串,有的行有两个字符串,有的行只有一个字符串,而且有的行前面有很多空格,如何读取
时间: 2024-12-04 18:30:04 浏览: 6
在C++中读取这种格式不固定的文本文件,可以采用逐行解析,并使用`getline`函数处理每一行。首先,需要包括头文件`<fstream>`和`<sstream>`(用于字符串流操作),然后创建一个`std::ifstream`对象来打开文件。
以下是一个基本的示例步骤:
1. 定义一个结构体或类来表示一行的数据,比如`struct DataPoint`或`class LineInfo`,包含多个字符串成员变量,如`std::vector<std::string> strVector`。
```cpp
struct DataPoint {
std::vector<std::string> data;
};
```
2. 打开文件并读取:
```cpp
std::ifstream file("your_file.txt");
if (!file.is_open()) {
// 处理文件打开失败的情况
}
DataPoint currentLine;
std::string line;
while (std::getline(file, line)) {
std::istringstream iss(line);
std::string tempStr;
// 使用循环逐个读取字符串,直到不能再获取
while (iss >> tempStr) {
currentLine.data.push_back(tempStr); // 将每个读到的字符串添加到数据列表中
}
// 判断是否还有额外空格,如果有则继续读取
if (iss.peek() != EOF && iss.peek() != ' ') {
iss.ignore(); // 忽略剩余的空格
iss >> tempStr; // 如果还有内容,再读取一次
currentLine.data.push_back(tempStr);
}
}
```
3. 关闭文件:
```cpp
file.close();
```
现在`currentLine.data`包含了这一行的所有字符串。你可以根据实际的字符串数量来调整你的结构体或类。
阅读全文