欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 数字与字符串之间的相互转换

数字与字符串之间的相互转换

2025/3/18 6:33:18 来源:https://blog.csdn.net/2301_80093604/article/details/146326194  浏览:    关键词:数字与字符串之间的相互转换

在 C++ 中,标准库提供了丰富的工具来实现数字与字符串之间的相互转换。以下是详细的实现方法:


1. 数字转字符串

将数字(如 intdouble 等)转换为字符串。

方法 1:使用 std::to_string

std::to_string 是 C++11 引入的函数,可以将各种数字类型转换为字符串。

#include <iostream>
#include <string>int main() {int num = 12345;double pi = 3.14159;std::string str1 = std::to_string(num); // 将 int 转换为字符串std::string str2 = std::to_string(pi);  // 将 double 转换为字符串std::cout << "str1: " << str1 << std::endl; // 输出:str1: 12345std::cout << "str2: " << str2 << std::endl; // 输出:str2: 3.141590return 0;
}

优点:简单易用,支持多种数字类型。


方法 2:使用 std::stringstream

std::stringstream 是一个灵活的流类,可以将数字插入到流中并提取为字符串。

#include <iostream>
#include <sstream>
#include <string>int main() {int num = 12345;double pi = 3.14159;std::stringstream ss1, ss2;ss1 << num; // 将 int 插入流中ss2 << pi;  // 将 double 插入流中std::string str1 = ss1.str(); // 提取为字符串std::string str2 = ss2.str();std::cout << "str1: " << str1 << std::endl; // 输出:str1: 12345std::cout << "str2: " << str2 << std::endl; // 输出:str2: 3.14159return 0;
}

优点:灵活,适合需要格式化输出的场景。


2. 字符串转数字

将字符串转换为数字(如 intdouble 等)。

方法 1:使用 std::stoistd::stod 等函数

C++11 引入了 std::stoi(字符串转 int)、std::stod(字符串转 double)等函数。

#include <iostream>
#include <string>int main() {std::string str1 = "12345";std::string str2 = "3.14159";int num1 = std::stoi(str1);    // 将字符串转换为 intdouble num2 = std::stod(str2); // 将字符串转换为 doublestd::cout << "num1: " << num1 << std::endl; // 输出:num1: 12345std::cout << "num2: " << num2 << std::endl; // 输出:num2: 3.14159return 0;
}

优点:简单易用,支持多种数字类型。


方法 2:使用 std::stringstream

std::stringstream 也可以用于将字符串转换为数字。

#include <iostream>
#include <sstream>
#include <string>int main() {std::string str1 = "12345";std::string str2 = "3.14159";int num1;double num2;std::stringstream ss1(str1), ss2(str2);ss1 >> num1; // 从流中提取 intss2 >> num2; // 从流中提取 doublestd::cout << "num1: " << num1 << std::endl; // 输出:num1: 12345std::cout << "num2: " << num2 << std::endl; // 输出:num2: 3.14159return 0;
}

优点:灵活,适合需要处理多种数据类型的场景。


方法 3:使用 C 标准库函数

C 标准库提供了 atoi(字符串转 int)、atof(字符串转 double)等函数。

#include <iostream>
#include <cstdlib> // 包含 atoi 和 atofint main() {const char* str1 = "12345";const char* str2 = "3.14159";int num1 = std::atoi(str1);    // 将字符串转换为 intdouble num2 = std::atof(str2); // 将字符串转换为 doublestd::cout << "num1: " << num1 << std::endl; // 输出:num1: 12345std::cout << "num2: " << num2 << std::endl; // 输出:num2: 3.14159return 0;
}

优点:兼容 C 语言,适合需要与 C 代码交互的场景。


3. 处理异常情况

在字符串转数字时,如果字符串包含非数字字符,可能会抛出异常或返回错误结果。可以通过以下方式处理异常:

使用 try-catch 捕获异常
#include <iostream>
#include <string>int main() {std::string str = "123abc";try {int num = std::stoi(str); // 尝试转换std::cout << "num: " << num << std::endl;} catch (const std::invalid_argument& e) {std::cerr << "无效的字符串: " << e.what() << std::endl;} catch (const std::out_of_range& e) {std::cerr << "数字超出范围: " << e.what() << std::endl;}return 0;
}

输出

无效的字符串: stoi

4. 总结

方法数字转字符串字符串转数字优点
std::to_string支持不支持简单易用,支持多种数字类型
std::stoi 等函数不支持支持简单易用,支持多种数字类型
std::stringstream支持支持灵活,适合复杂场景
C 标准库函数不支持支持兼容 C 语言

根据具体需求选择合适的方法。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词