如何在 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 这样的库)的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中将 bitset 转换为 int

如何在 C++ 中将字符串转换为 int?

如何在 Java 中将 String 转换为 int?

如何在 Java 中将 String 转换为 int?

如何在 C++ 中将数字字符串转换为 int 数组 [重复]

如何在 C++ 中将“string*”转换为“const string&”?