C/C++
NXGG
Program Lover
展开
-
控制台打印CopyRight版权符©
在往控制台打印诸如版权符©,或者注册商标符®时,往往发现输出的是问号(?)。原因很简单,就是控制台当前使用的Code Page中找不到对应的字符,BTW,实际上几乎所有的输出异常或乱码都跟Code Page有关。方法一:使用_setmode,代码如下:#include <io.h>#include <fcntl.h>void main(void){ ...原创 2020-02-14 20:05:20 · 1282 阅读 · 0 评论 -
如何让自定义类能像cout(ostream)那样输出数据
相信不少C++程序员初次看到下面的写法时,一定留下了深刻印象:#include<iostream>using namespace std; int main() { cout << "Hello World!" << endl;}至少,对于当时从C语言转向学习C++的我是深感震惊,如此形象直观的输出方式,简直是黑科技。那么如何在自定义类...原创 2019-11-09 19:19:22 · 2185 阅读 · 0 评论 -
从++++谈左值右值
看如下代码:int iData=0;++++iData;iData++++;两个问题:1.上面的代码能通过编译吗?2.如果能,结果是什么;如果不能,为什么?相信对C/C++语法熟悉的人来说,第一个问题并不难,iData++++是非法的。有点难度的是解释为什么不能通过编译。要简单回答这个问题,就涉及到了左值和右值的概念。简单理解,赋值操作符=左边的就是左值,...原创 2019-10-31 20:26:50 · 170 阅读 · 0 评论 -
关于浮点数的EPSILON
如何获取EPSILON的值在C语言中,float和double的EPSILON值在float.h头文件中以宏的方式给出,分别是FLT_EPSILONDBL_EPSILON在C++中,则可以numeric_limits模板类的epsilon方法获取到,分别是std::numeric_limits<float>::epsilon()std::numeric_lim...原创 2018-06-09 10:54:59 · 22475 阅读 · 0 评论 -
C/C++“潜规则”之——默认数据类型
原则上来说,C/C++是一种严格数据类型的语言,简单说,语法对于函数声明、赋值、传参等涉及到数据类型的地方都会有严格的验证和匹配规则。但也有”例外“——C/C++的潜规则之默认数据类型。这里举两个例子:1.函数参数bool DoSomething(unsigned Data);上面的写法是合法的,可以通过编译,其中,Data的数据类型是unsigned int,即无符号整...原创 2019-09-08 14:29:50 · 1060 阅读 · 0 评论 -
C/C++“潜规则”之——默认返回值
相比C/C++”潜规则“之默认数据类型,这条”潜规则“个人感觉要更为隐晦,也更容易引发错误。看代码:int Bar( void ){ if(FALSE) { return 1; }}int iResult = Bar(void);请问:1.上述代码能通过编译吗?2.如果能的话,那么iResult的值...原创 2019-09-08 14:42:04 · 2378 阅读 · 3 评论 -
再谈C++逐行读取文本文件
要说使用C++逐行读取文本文件(通常为.txt文件),最为常见的写法是这样的:std::string strLine; while(getline(file,strLine)) { ……}这里忽略了一个重要的因素——文本的编码方式。打开windows自带的记事本程序,留意观察“保存”对话框,其右下角提供了文字编码选择下拉列表,除了大家熟知的ANSI和UNICODE编码,...原创 2018-06-08 23:43:32 · 1917 阅读 · 0 评论