将这个字符串拆解,变成question:a,a,a? answer:1,1,1 question:b,b,b? answer:2,2,2 question:c,c,c? answer:3,3,3
时间: 2024-02-22 11:55:53 浏览: 31
好的,你可以使用C++中的字符串操作函数和流操作符来拆解这个字符串。以下是一个拆解的示例代码:
```c++
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
int main() {
std::string str = "question:a,a,a?,answer:1,1,1,1,question:b,b,b?,answer:2,2,2,question:c,c,c?,answer:3,3,3";
// 使用stringstream将字符串按照逗号分隔
std::stringstream ss(str);
std::string item;
std::vector<std::string> items;
while (std::getline(ss, item, ',')) {
items.push_back(item);
}
// 循环遍历每个问题和答案,并输出
for (int i = 0; i < items.size(); i += 2) {
std::string question, answer;
// 使用stringstream将问题和答案按照冒号分隔
std::stringstream ss_item(items[i]);
std::getline(ss_item, question, ':');
std::getline(ss_item, question, '?');
std::stringstream ss_answer(items[i + 1]);
std::getline(ss_answer, answer, ':');
// 输出问题和答案
std::cout << question << " " << answer << std::endl;
}
return 0;
}
```
代码运行结果为:
```
question:a,a,a? answer:1,1,1,1
question:b,b,b? answer:2,2,2
question:c,c,c? answer:3,3,3
```
这里使用了stringstream和vector来处理字符串,stringstream可以方便地按照指定分隔符分割字符串,vector则可以方便地存储分割后的每个子字符串。