C++ StringStream 实现十进制到十六进制和十六进制到十进制转换

17 Mar 2025 | 4 分钟阅读

在本文中,您将学习在 C++ 中使用 StringStream 进行十进制到十六进制和十六进制到十进制的转换。但在讨论其实现之前,您必须了解 C++ 中的 stringStream。

C++ 中的 stringstream 是什么?

C++ 中一个强大的功能叫做 StringStream,它可以在各种数据类型和字符串表示之间进行平滑转换。StringStream 通过提供一种管理数据类型的有效方法,使得处理像十进制到十六进制以及反向转换这样的操作变得更容易,而无需复杂的编码。

Std::stringstream 是 C++ 中一个灵活的工具,用于将字符串当作输入/输出流来处理。它是标准模板库 (STL) 中 <sstream> 头文件的一部分。与用于文件或控制台的输入/输出流类似(如 std::cin, std::cout, std::ifstream 等),它提供了对字符串执行输入、输出和格式化等操作的功能。

标准函数概览:stringstream

std::stringstream 的基础是一个可以从字符串读取和向字符串写入的流的概念。与普通的 I/O 流类似,它允许用户通过使用流操作符 \\ (插入) 和 >> (提取),轻松地在字符串数据和其他类型(如字符、数值类型等)之间进行转换。

十六进制到十进制转换概述

  • 十进制和十六进制是编程中经常使用的两种不同的数字系统。
  • 十六进制使用基数 16(0-9 和 A-F),而十进制使用基数 10(0-9)。
  • 将一个十进制数转换为十六进制,需要连续地将其除以 16 并记录每一步的余数。通过将余数转换为它们对应的十六进制值并按相反顺序排列,来创建十六进制表示。

使用 stringstream 进行十进制到十六进制的转换

C++ 中的 StringStream 可以有效地处理所需的字符串操作,从而简化了从十进制到十六进制的转换过程。

示例

让我们通过一个例子来说明如何使用 stringstream 从十进制转换为十六进制:

输出

StringStream in C++ for Decimal to Hexadecimal and Hexadecimal to Decimal

以上代码利用 DecimalToHexadecimal 函数,使用 std::hexstd::stringstream 将一个十进制数转换为其等效的十六进制。main() 函数打印作为字符串获得的十六进制值。

说明

函数 DecimalToHexadecimal

  • DecimalToHexadecimal 函数的输入是一个整数 decimalNumber
  • 它使用一个 std::stringstream 对象 (ss) 来操作和转换字符串。
  • ss \\ std::hex \\ decimalNumber; 用于将 std::hex 操作符应用于 stringstream。这样做可以将 stringstream 配置为将任何后续的整数输入解释为十六进制。
  • 该函数使用 str() 来检索 stringstream 的内容,并返回一个字符串。这个字符串包含了所提供的十进制数的十六进制表示。

示例

让我们通过一个例子来说明如何使用 stringstream十六进制转换为十进制

输出

StringStream in C++ for Decimal to Hexadecimal and Hexadecimal to Decimal

这段代码片段的 HexadecimalToDecimal 方法使用 std::stringstreamstd::hex 将一个十六进制字符串转换为其对应的十进制整数。之后,main() 方法显示并返回该十进制值。

说明

  • const std::string &hexadecimal; int HexadecimalToDecimal
  • 此函数接受一个十六进制数的字符串表示作为输入,并输出一个整数,即其对应的十进制表示。
  • std::stringstream ss;: 它初始化一个名为 ss 的 std::stringstream 对象,该对象将用于操作和转换字符串。
  • ss \\ hexadecimal: std::hex \\: \\ 操作符用于将输入的十六进制字符串插入到 stringstream ss 中。使用 std::hex 操作符来告诉 stringstream 将传入的字符串解释为十六进制数。
  • int decimalNumber; ss >> decimalNumber;: stringstream ss 将十六进制字符串转换为十六进制数,然后将信息读取为整数。该值被提取并存储在 decimalNumber 变量中。
  • return decimalNumber;: 该函数返回一个十进制数,其中包含十六进制字符串等效的十进制表示。

总结

StringStream 简化了十进制和十六进制表示之间的转换,因为它能有效地管理字符串操作。它提供了一种复杂的解决方案,消除了费力的人工计算的需要。程序员可以通过使用 StringStream 的功能轻松地在十进制和十六进制之间以及十六进制和十进制之间进行转换,从而提高了代码的可读性和可维护性。

理解在这些转换中如何使用 StringStream 不仅简化了代码,而且还展示了 C++ 如何轻松地处理各种数据类型。