描述
用递归法将一个整数 n 转换成字符串。例如,输人 483,应输出字符串"483”。
n的位数不确定,可以是任意位数的整数。
输入
输入一个整数
输出
输出一个字符串
输入样例 1
483
输出样例 1
483
代码一(如下):
#include
using namespace std;
int main()
{
int a;
cin >> a;
int number = a;
char word[10];
int count = 0;
while (a != 0) //得出输入的数字的位数
{
a = a / 10;
count++;
}
for (int i = count; i >0; i--) //将整型转换为字符串
{
word[i] =number % 10+'0'; //'0'的ASCII码为48,当(number%10)+48则得到(number%10)的ASCII码,然后储存在字符数组中
number = number / 10; //此处为逆序储存,最后要顺序输出
}
for (int i = 1; i <= count; i++) //输出字符串
{
cout << word[i];
}
return 0;
}
代码二(如下):采用stringstream
#include
#include
#include
using namespace std;
string change(int i) // 将int 转换成string
{
stringstream s;
s << i; //将i放入s中
return s.str(); //用str()将stringstream类型转换为string类型
}
int main() {
int i;
cin >> i;
string ss = change(i);
cout << ss;
return 0;
}
代码三(如下):采用to_string( )函数
#include
#include
using namespace std;
int main()
{
int a;
cin >> a;
string b;
b = to_string(a);
cout << b;
return 0;
}
问题点:
①:字符数据在内存中的存储形式及其使用方法:
将一个字符常量存放到内存单元时,实际上并不是把该字符本身放到内存单元中去,而是将该字符相应的ASCII码放到存储单元中。
既然字符数据以ASCII码存储的,它的存储形式就与整数的存储形式类似。这样,在C++中字符型数据和整型数据之间就可以通用。一个字符数据可以赋给一个整型变量,反之,一个整型数据也可以赋给一个字符变量。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。
②:头文件
此部分选自C++ stringstream_Sakuya__的博客-CSDN博客
③:stringstream类
1)创建一个stringstream类型变量,向对象输入其他类型的数据("<<"为插入运算符,如代码二中是将“i”插入“s”当中)
2)stringstream
可以将存储于内部的字符串输出,需要调用 str()
函数,不可直接输出:
cout << ss.str() << endl;
// cout << ss << endl; // 错误,不可直接输出
str()函数可以将int类型、float类型或是stringstream类型的数据转换为string类型的数据。
此部分参考C++ stringstream 简单使用_原来是枫哥呀!的博客-CSDN博客
④:to_string( )函数(包含在头文件
将整型数据转换为字符串,返回值为转换完毕的字符串。