stringstream 转结构体
时间: 2023-06-22 11:33:17 浏览: 62
可以使用 `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的各个成员变量的值即可。
结构体转string
结构体转string可以通过多种方式实现,其中比较常见的方法是使用stringstream或者boost库中的lexical_cast函数。
使用stringstream时,可以通过重载<<运算符将结构体中的各个成员变量插入到stringstream对象中,然后通过调用stringstream对象的str()函数获取字符串表示。
使用boost库中的lexical_cast函数则可以直接将结构体转换为字符串。需要注意的是,在使用lexical_cast时需要包含boost库的头文件。
下面是一个使用stringstream实现结构体转string的示例代码:
```
#include <iostream>
#include <sstream>
using namespace std;
struct Person {
string name;
int age;
};
int main() {
Person p = {"Tom", 20};
stringstream ss;
ss << "Name: " << p.name << ", Age: " << p.age;
string s = ss.str();
cout << s << endl;
return 0;
}