整数转字符串

描述

用递归法将一个整数 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码进行算术运算。

②:头文件

  定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。

        主要用来进行数据类型转换,由于 使用 string 对象来代替字符数组(snprintf 方式),避免了缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符号的问题。相比 C 编程语言库的数据类型转换, 更加安全、自动和直接。

此部分选自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( )函数(包含在头文件中)

将整型数据转换为字符串,返回值为转换完毕的字符串。

你可能感兴趣的:(ACM作业,c++)