C/C++数字与字符串的相互转换方法
在C/C++中,数字和字符串之间的转换是一个常见的任务。以下是一些常用的方法来实现这种转换:
从数字转换为字符串
std::to_string
(C++11 及以上)- 这是C++标准库提供的简便方法。
int num = 123;
std::string str = std::to_string(num);
std::ostringstream
- 使用输出字符串流将数字格式化为字符串。
#include <sstream>
int num = 123;
std::ostringstream oss;
oss << num;
std::string str = oss.str();
sprintf
(C语言风格)- 使用
stdio.h
中的sprintf
函数。
#include <cstdio>
int num = 123;
char buffer[20];
sprintf(buffer, "%d", num);
std::string str(buffer);
- 使用
从字符串转换为数字
std::stoi
,std::stol
,std::stoll
,std::stof
,std::stod
,std::stold
(C++11 及以上)- 这些函数可以将字符串转换为不同类型的数字。
std::string str = "123";
int num = std::stoi(str);
std::stringstream
- 使用输入字符串流将字符串解析为数字。
#include <sstream>
std::string str = "123";
int num;
std::istringstream iss(str);
iss >> num;
atoi
,atol
,atof
(C语言风格)- 来自
cstdlib
,这些函数可以将C风格字符串转换为整数或浮点数。
#include <cstdlib>
const char* cstr = "123";
int num = atoi(cstr);
- 来自
注意事项
- 使用
std::stoi
和相关函数时,需要处理可能抛出的异常,例如std::invalid_argument
和std::out_of_range
。 atoi
等C式转换函数不会抛出异常,但如果转换失败,它们通常返回0,这可能会隐藏错误。
这些方法应该涵盖了大多数数字与字符串之间相互转换的需求。选择具体方法时,考虑代码的可读性、异常处理需求和所用的C++标准版本。