C++ stringstream 转结构体
时间: 2023-07-11 09:25:27 浏览: 254
可以使用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的各个成员变量的值即可。
相关问题
c++ stringstream 自定义类型序列化
使用C++的stringstream可以将自定义类型序列化为字符串。下面是一个简单的示例:
```c++
#include <iostream>
#include <sstream>
struct Person {
std::string name;
int age;
};
std::ostream& operator<<(std::ostream& os, const Person& p) {
os << p.name << " " << p.age;
return os;
}
std::istream& operator>>(std::istream& is, Person& p) {
is >> p.name >> p.age;
return is;
}
int main() {
std::stringstream ss;
Person p {"Alice", 25};
ss << p;
std::cout << "Serialized: " << ss.str() << std::endl;
Person deserialized;
ss >> deserialized;
std::cout << "Deserialized: " << deserialized.name << " " << deserialized.age << std::endl;
return 0;
}
```
在这个示例中,我们定义了一个Person结构体,并为其定义了输出流和输入流运算符。然后,我们使用stringstream将一个Person对象序列化为字符串,并将序列化后的字符串输出到控制台。接着,我们从stringstream中反序列化出一个Person对象,并将反序列化后的对象输出到控制台。
这里需要注意的是,输入流和输出流运算符必须是全局函数,而不能是成员函数。因为我们需要对Person类型进行序列化和反序列化,而这些操作并不是Person类型的成员函数。
c++ 结构体转string
你可以使用`std::stringstream`来将C++结构体转换为字符串。
首先,确保你的结构体已经定义。例如,假设我们有一个名为`Person`的结构体:
```cpp
struct Person {
std::string name;
int age;
};
```
接下来,你可以创建一个函数来将结构体转换为字符串:
```cpp
#include <sstream>
std::string structToString(const Person& person) {
std::stringstream ss;
ss << "Name: " << person.name << ", Age: " << person.age;
return ss.str();
}
```
在这个例子中,我们使用`std::stringstream`来构建字符串。我们使用插入运算符`<<`将结构体的字段插入到流中。
最后,使用该函数将结构体转换为字符串:
```cpp
Person person;
person.name = "John";
person.age = 25;
std::string personString = structToString(person);
std::cout << personString << std::endl;
```
这样,你就可以将C++结构体转换为字符串了。输出将会是:"Name: John, Age: 25"。
阅读全文