将 char[] 格式的十六进制字符串 buf 转换为对应的十六进制 unsigned int 类型的 raw_data。
输入为char buf[11] = {"0xa1bc2def"};
希望输出unsigned int raw_data =0xa1bc2def;
#include <iostream>
#include <cstring>
#include <sstream>
unsigned int hexStringToUnsignedInt(const char* buf)
{
std::stringstream ss;
ss << std::hex << buf;
unsigned int raw_data;
ss >> raw_data; // 将十六进制字符串转换为 unsigned int
return raw_data;
}
int main()
{
char buf[] = "1A3F"; // 示例十六进制字符串
unsigned int raw_data = hexStringToUnsignedInt(buf);
std::cout << "Raw Data: " << raw_data << std::endl;
return 0;
}
std::stringstream
是 C++ 标准库中的一个类,位于 <sstream>
头文件中。它是 std::basic_stringstream
类的别名,用于处理字符串流。
std::stringstream
允许我们将数据从内存中的字符串读取到变量中,或者将变量的值写入到字符串中。它提供了与输入输出流类似的接口,可以使用流操作符 <<
和 >>
来读写数据。与 std::string
类型相互转换的过程在 std::stringstream
类中是无缝的。
下面是 std::stringstream
类的一些重要特点和用途:
-
字符串流的读写操作:可以使用
<<
运算符将不同类型的数据写入到字符串流中,也可以使用>>
运算符从字符串流中提取数据到变量中。这使得字符串流可以用作数据的中间存储器。 -
格式化输出和输入:通过使用流操作符和控制符,如
std::setw()
、std::setfill()
和std::setprecision()
,可以对输出和输入进行格式化,控制数据的显示方式、宽度、精度等。 -
字符串流的清空和重置:可以通过调用
str()
方法来清空字符串流或将其重置为新的字符串。这样可以方便地在不同的场景中重复使用字符串流对象。 -
数据类型转换:可以将字符串流中的数据转换为其他类型的数据,例如将字符串转换为整数、浮点数等,或者将其他类型的数据转换为字符串。
-
灵活性和可扩展性:
std::stringstream
是基于 C++ 标准库中的输入输出流类而构建的,因此它继承了输入输出流的许多特性和功能。同时,您还可以将其与其他流类(如文件流)结合使用,实现更复杂的数据处理和操作。