如何在 C++ 中将 Int 转换为 String,反之亦然(不使用像 sstream 这样的库)
Posted
技术标签:
【中文标题】如何在 C++ 中将 Int 转换为 String,反之亦然(不使用像 sstream 这样的库)【英文标题】:How to convert Int to String and vice versa in c++ (without using libraries like sstream) 【发布时间】:2019-12-02 02:11:49 【问题描述】:对于我的大学计算机科学课程,我们的教授希望我们使用一种将字符串转换为 int(并将 int 转换为字符串)的方法,而无需使用任何库,例如 sstream。我无法在笔记/在线的任何地方准确找到它,我希望有人可以向我展示/告诉我它是什么,并告诉我之后我如何知道它已成功转换。我所知道的是它涉及使用 static_cast 和 ASCII。他在课堂上快速复习了一遍,我迅速将代码抄下来,这样我就有可能遗漏重要的东西或打错了东西,但这就是我得到的。
void intToStr()
string numString = "2019";
int num = 0;
for(int i =0; i < numString.length(); i++)
char c = numString[i];
num = num * 10 + static_cast<int>(c) - static_cast<int>('0');
【问题讨论】:
字符串只是一堆字符。您可以轻松地将字符转换为 int,- '0'
,反之亦然,将 int 转换为字符,+ '0'
。
这似乎完全正确,除了是StrToInt
并且没有返回num
。
【参考方案1】:
您不必将 c 创建为 char,因为这会增加一个额外的转换步骤,并且使用 static_cast 会让人不知所措
如果您将 char 分配给 int,则 c++ 将为 char 分配 ASCII 值,例如,“2”的 char 版本的 ascii 代码为 50,以获得整数值,您减去“0”的 char 版本为那是与数字对应的第一个 ascii 值,类似地,如果您想获取字母的数字值,说您正在执行诸如将字符串转换为数字之类的操作,您首先将字母分配给 int 以获取其 ascii 值和根据您使用的情况减去 char 'a' 或 'A',它会返回字母表中的字母索引,下面是演示我对数字的描述的代码
// Example program
#include <iostream>
#include <string>
using namespace std;
int main()
string numString = "2019";
int num = 0;
for(int i =0; i < numString.size(); i++)
int c = numString[i] -'0';
cout << c << endl;
num = num * 10 + c;
cout << num << endl;
【讨论】:
如何将 int 转换为字符串? 相同的过程,使用整数除法将每个 int 切掉,然后将其存储在 char 中,并根据下限或上限添加 'a' 或 'A' 我的代码会是什么样子,因为无法以相同的方式处理整数,例如为我的 for 循环或数组查找它的长度? 改变你的循环,这样你就可以继续工作 while (numberToParse!= 0) 既然不能将 int 视为数组,那该怎么办。你能把它的代码写出来让我看看吗?以上是关于如何在 C++ 中将 Int 转换为 String,反之亦然(不使用像 sstream 这样的库)的主要内容,如果未能解决你的问题,请参考以下文章