c++考点之整数转化为字符和ASCII

本文探讨了C++中itoa函数用于整型转字符字符串的方法,以及ASCII码的输出实践,并解释了#include<iomanip>头文件在格式化输入输出中的作用。同时,对C++标准库中的控制运算符如setiosflags进行了介绍。
摘要由CSDN通过智能技术生成

如题:

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;
}

在这里插入图片描述


疑问:

  1. #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) 指数表示
  1. 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;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值