stringstream 转结构体
时间: 2023-06-22 12:33:17 浏览: 180
可以使用 `stringstream` 的 `operator>>` 运算符来将字符串解析成结构体。假设有以下结构体:
```cpp
struct Person {
std::string name;
int age;
std::string address;
};
```
并且有以下字符串:
```cpp
std::string personStr = "Tom,25,New York";
```
则可以使用以下代码将字符串解析成结构体:
```cpp
#include <sstream>
// ...
Person person;
std::stringstream ss(personStr);
std::getline(ss, person.name, ',');
ss >> person.age;
std::getline(ss, person.address);
```
首先将字符串转化为 `stringstream` 对象,然后使用 `std::getline` 函数读取以 `,` 分隔的字符串,并将结果存储到结构体的相应字段中。最后使用 `operator>>` 运算符将字符串转化为整数。
相关问题
C++ stringstream 转结构体
可以使用stringstream将字符串转换为结构体。假设有以下结构体定义:
```cpp
struct Person {
std::string name;
int age;
double height;
};
```
可以使用如下代码将字符串转换为Person结构体:
```cpp
#include <iostream>
#include <sstream>
int main() {
std::string str = "Tom 20 1.75";
std::stringstream ss(str);
Person p;
ss >> p.name >> p.age >> p.height;
std::cout << "Name: " << p.name << std::endl;
std::cout << "Age: " << p.age << std::endl;
std::cout << "Height: " << p.height << std::endl;
return 0;
}
```
在上述代码中,我们首先将字符串"Tom 20 1.75"存储在stringstream对象ss中。然后依次使用" >> "运算符将ss中的数据读取到Person结构体p中的各个成员变量中。最后输出p的各个成员变量的值即可。
Stringstream 存储一个结构体,指针为aa
Stringstream(stringstream)是C++标准库中的一个流类模板,它允许我们将输入和输出操作应用于字符串。如果你想使用Stringstream来存储一个结构体,特别是其中有一个指针成员,例如`struct A`,其指针变量为`aa`,首先你需要将该结构体转换为字符串形式。
假设`A`结构体如下:
```cpp
struct A {
int* aa; // 指向整数的指针
};
```
你可以这样做:
```cpp
#include <sstream>
#include <iostream>
// 示例结构体
struct A {
int* aa;
};
void storeInString(A a, std::ostringstream& strStream) {
strStream << "aa points to: " << *a->aa; // 将指针所指向的值存入字符串
}
int main() {
A obj;
obj.aa = new int(42); // 分配内存
std::ostringstream oss;
storeInString(obj, oss); // 将结构体信息存储到oss中
// 现在oss的内容就是"aa points to: 42"
std::string storedStruct = oss.str();
delete obj.aa; // 别忘了释放内存
// ...然后你可以进一步处理这个字符串,如打印、保存等
std::cout << storedStruct << std::endl;
return 0;
}
```
这里我们创建了一个Stringstream `oss`,并通过`storeInString`函数将其内容设置为结构体`A`的指针所指向的值。
阅读全文
相关推荐















