文档章节

代码笔记2014-5-6

树叶先生
 树叶先生
发布于 2014/05/06 10:06
字数 825
阅读 94
收藏 3

今天做了一道题,将一个十进制数转化成八进制十六进制输出。

本来很简单,但是输出的时候出现很多问题。

关于进制的转化,我先是用了如下模板:


但转化成十六进制输出的结果却差强人意,因为大于10的时候还是按照数值而不是字母输出的。

然后我把大于10的地方单独拉开如下:

但是又遇到了问题,因为标准输出里16进制前要有“0x”字符。

而我的八进制同样遇到了问题,因为标准输出中要求八进制输出结果第一位为0.我试图用setw+setfill函数控制3位或5位补零操作但失败了。(附上setw和setfill函数用法)

▲setw(n)用法: 通俗地讲就是预设宽度
    如 cout<<setw(5)<<255<<endl;
    结果是:
    (空格)(空格)255

▲setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充
    如 cout
<< setfill('0') << setw(5)<<255<<endl;
    结果是:
    00255


然后我又找到了setbase(int)函数来转换进制。(附上setbase函数用法)


    ▲setbase(int n) : 将数字转换为 n 进制.
    如 cout<<setbase(8)<<255<<endl;
         cout<<setbase(10)<<255<<endl;
         cout<<setbase(16)<<255<<endl;
    结果是:
    377
    255
    f f

但有一个弊端。我转换进制的函数都在一个类里。测试时一个数字先后输出十进制八进制十六进制三种形式。而用了setbase(n)之后,可能下一次输出十进制数却成了十六进制形式。这个让我很郁闷。

后来我发现了解决办法。就是你要输出什么进制数之前就在前面加相应的dec,oct或hex

如:

  cout << showbase << oct << n;

这次问题就解决了!


<iomanip>这个头文件里还有一个常用函数——

  ▲ setprecision用法
    使用setprecision(n)可控制输出流显示浮点数的数字个数为n。C++默认的流输出数值有效位是6。

    如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。

    setiosflags(ios::fixed)是用定点方式表示实数。

    如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。

    setiosflags(ios::scientific)是用指数方式表示实数。

其实也可以像这样用 fixed ,来输出一个精度为 p 的 double t 及 int p 而不引起冲突

  cout << dec;  
  cout << fixed;
  cout << setprecision(precision) << p;
 cout << target << endl;


另外,今天还遇到一种语法错误 : 缺少“;”(在“using”的前面)

出现在我类的cpp文件“using namespace std;”一句之前。

我百思不得其解,因为上面是声明引用类头文件那一句

后来百度过之后,发现是因为我的类头文件里 class声明完成后“}”后面没有加“;”

这也让我对编译器有了更深的了解。


参考资料:

进制转换模板:http://blog.csdn.net/xiaofei2010/article/details/7434737

<iomanip>函数详解:http://c.chinaitlab.com/cc/basic/200908/791444.html

语法错误:http://bbs.csdn.net/topics/300083472

© 著作权归作者所有

上一篇: 代码笔记-2014-4-24
下一篇: 代码笔记2014-4-22
树叶先生
粉丝 0
博文 4
码字总数 4660
作品 0
广州
私信 提问
ios8新特性屏幕适配之sizeclass

ios8推出也有一段时间了,由于时间比较紧,所以没去学习ios8的新特性,随着iphone6,6+的推出,ios屏幕适配是一个大问题,如何成功适配各种尺寸以及ipad呢?苹果公司为了解决这个问题给出了新...

哥特复心
2014/12/08
10.3K
0
ImageNet历年冠军和相关CNN模型

ImageNet 是一个超过15 million的图像数据集,大约有22,000类。 是由李飞飞团队从2007年开始,耗费大量人力,通过各种方式(网络抓取,人工标注,亚马逊众包平台)收集制作而成,它作为论文在...

PilgrimHui
2018/09/08
0
0
ggplot2学习笔记系列之利用ggplot2绘制误差棒及显著性标记

绘制带有误差棒的条形图 library(ggplot2) #创建数据集 df <- data.frame(treatment = factor(c(1, 1, 1, 2, 2, 2, 3, 3, 3)), response = c(2, 5, 4, 6, 9, 7, 3, 5, 8), group = factor(c......

R语言中文社区
2018/02/12
0
0
caffe资源汇总(更新中)

学习需要更新,网上有一些非常不错博客,首先感谢这些博主,他们都很认真。其次是这些笔记。 1、xizero00 2、lingerlanlan 3、iamzhangzhuping 4、zhangwang 5、yhl_leo 6、在路上 7、s...

langb2014
2016/05/31
0
0
pyqt 学习基础5 - 笔记软件的编辑器

笔记软件的编辑器 几个疑问 今天在试着为笔记软件写个编辑器,然后参考qt自带的textedit的示例。下面是一个撤销操作的一段代码,我就疑惑了,这跟用QPushButton应该差不多吧。 NoDragCombo这...

Cosven
2014/08/30
704
0

没有更多内容

加载失败,请刷新页面

加载更多

总结:单机与分布式

传统计算方案演变 1、单机并行运算 1,打开数据源 2,统计出有多少个文件。 3,为每个文件执行相同的统计命令 4,等待所有命令执行成功。 5,合并统计后结果输出或执行进一步统计 2、分布式并...

浮躁的码农
21分钟前
3
0
关于怎么解决CENTOS7没有ETH0网卡这个问题

CentOS7系统安装完毕之后,输入ifconfig命令发现没有eth0,不符合我们的习惯。而且也无法远程ssh连接。 1.进入目录/etc/sysconfig/network-scripts/ 2.将文件ifcfg-ens33重命名为ifcfg-eth0;...

无名氏的程序员
27分钟前
3
0
HTML5 Web Storage 存储介绍

Web Storage是HTML5 API提供一个新的重要的特性; 最新的Web Storage草案中提到,在web客户端可用html5 API,以Key-Value形式来进行数据持久存储; 目前主要的浏览器已经支持该功能: 常见的...

前端老手
35分钟前
2
0
安装mxnet出现的错误

我出现下面的错误:是因为我前面的安装步骤都正确,只是这一步出现错误,sudo python setup.py install 其实我看了下我默认的python是3.6,是大于3.5 ,改为sudo python3 setup.py install就...

南桥北木
37分钟前
2
0
boot-组件

一、下拉菜单 二、button组 三、弹框 四、导航 boot提了三种形式的导航:水平导航、选项卡导航、胶囊导航

wytao1995
40分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部