如题:
2021年4月:
分析:
第一感觉是使用itoa,心里还是没底,隐约记得这个函数是整型数转换成字符串,并且这个函数是C里面的吧,在C++里面还有没有其他转成字符形式呢?还有一个问题是ASCII码的形式,如何输出?
对于第二个问题,从C中实际应用中,可以知道,直接按%c的形式打印输出就可以输出ASCII的形式。
验证代码为:
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char const *argv[])
{
int a (65) ;
char sa = (char)a;//将a强制转转成字符
//C++形式
cout <<a<<" "<<(char) a << endl;
//对应的C形式
printf("%d\r\n", sa);//字符以整数形式输出
printf("%c\r\n",a);//以ASCII
return 0;
}
疑问:
- #include <iomanip>这个头文件有什么作用呢???
主要是对cin,cout之类的一些操纵运算子,包括:setfill( ‘c’ ) 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充; setw( n ) 预设域宽为n个字符; setbase(int n) : 将数字转换为 n 进制. setprecision(long f)方法的用法使用setprecision(n)可控制输出流显示浮点数的数字个数。 setiosflags(ios::fixed)是用定点方式表示实数;如下:
- setiosflags(ios::left) 左对齐
- setiosflags(ios::right) 右对齐
- setiosflags(ios::skipws) 忽略前导空白
- setiosflags(ios::uppercase) 16进制数大写输出
- setiosflags(ios::showpoint) 强制显示小数点
- setiosflags(ios::showpos) 强制显示符号
- setiosflags(ios::scientific)是用指数方式表示实数。
- setiosflags(ios::fixed) 固定的浮点显示
- setiosflags(ios::scientific) 指数表示
- itoa():整型数转成字符串,怎么用来??
- 原型: char *itoa( int value, char *string,int radix);
value:要转换的数据。
string:目标字符串的地址。
radix:转换后的进制数,可以是10进制、16进制等,范围必须在 2-36。 - 功能:将整数value 转换成字符串存入string 指向的内存空间,非标准C库函数,不一定会被所有编译器支持,跨平台使用sprintf.
- 需要包含的头文件#include<cstdlib>
扩展:
- 另一种基于C实现整数转成字符串的方法:采用+‘0’,示例代码
如下:
#include <iostream>
#include<stdio.h>
int main()
{
int num = 12345, j = 0, i = 0;
char temp[7], str[7];
while (num)
{
temp[i] = num % 10 + '0';//取余后,依次得到从最低位开始的数
i++;
num = num / 10;
}
temp[i] = 0;//多加了一位置
printf("temp=%s\n",temp);//以字符串形式输出54321
i = i - 1;//多加再减去
printf("temp=%d\n",i);
while (i >= 0)
{
str[j] = temp[i];
i--;
j++;
}//反向输出
str[j] = '\0';
printf("string=%s\n",str);
system("pause");
return 0;
}