你可以使用 C++11 标准库里的 stringstream,它可以实现字符串和所有各种数字的转换,包括 int, float, double,简单粗暴,不用考虑缓冲区溢出的问题。自从知道这个神器之后,我就没有用过 sscanf 和 sprintf 函数了。
简单演示一下:
#include <string> #include <sstream> // 包含头文件 int main() { std::stringstream str2digit; std::string sint='1', sfloat='1.1', sdouble='1.2'; int dint; float dfloat; double ddouble; str2digit << sint; str2digit >> dint; // string to int str2digit.clear(); str2digit << sfloat; str2digit >> dfloat; // string to float str2digit.clear(); str2digit << sdouble; str2digit >> ddouble; // string to double std::cout << dint << ", " << dfloat << ", " << ddouble << std::endl; return 0; }
很简单吧,同理,也可以把整数浮点数转为字符串,将流的输入和输出对调一下即可。
当要进行多次数据类型转换时,需要先使用 clear() 清空流,不然之前的数据会影响下一次数据类型转换。
最后我推荐一本介绍C++的经典书,豆瓣评分9.5分,里面包含了42招独家技巧助您改善C++11和C++14的高效用法。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有