数,而是采用一种更可读的方式,即将所有参数先保存到结构体中,再在结构体中转换。这样可以确保转换过程更直观和易于理解,同时可以提高代码的可读性和可维护性。
以下是一个示例代码片段,演示如何在 C++ 中将字符串格式化为结构体:
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
// 定义一个结构体
struct Person {
std::string name;
int age;
std::string address;
};
// 定义一个函数,用于将字符串格式化为结构体
std::istream& operator>>(std::istream& is, Person& p) {
std::string name_str;
int age_val;
std::string address_str;
std::getline(is, name_str);
is >> age_val;
std::getline(is, address_str);
// 使用 sstream 对象格式化字符串
std::stringstream name_ss(name_str);
std::stringstream age_ss(std::to_string(age_val));
std::stringstream address_ss(address_str);
// 从 sstream 对象中读取数据,并将其保存到结构体中
name_ss >> p.name;
age_ss >> p.age;
address_ss >> p.address;
return is;
}
int main() {
// 创建一个 Person 结构体
Person person;
// 使用字符串格式化,将字符串转换为结构体
std::string input_str = "John, 25, 123 Main St.";
std::istringstream iss(input_str);
iss >> person;
// 输出格式化后的结构体
std::cout << "Name: " << person.name << std::endl;
std::cout << "Age: " << person.age << std::endl;
std::cout << "Address: " << person.address << std::endl;
return 0;
}
在这个示例中,我们首先定义了一个名为 Person 的结构体,该结构体包含三个成员:name、age 和 address。然后我们定义了一个函数,该函数使用 sstream 对象将字符串格式化为结构体。最后,我们在 main 函数中使用字符串和 istringstream 对象将字符串转换为结构体,并输出格式化后的结构体内容。
领取专属 10元无门槛券
手把手带您无忧上云