##C++ Primer 学习笔记(第一章:开始)ios
[TOC]函数
Windows命令行下运行Visual Studio 编译器:cl /EHsc prog1.cpp
,微软编译器会自动生成一个可执行文件prog1.exe
。学习
标准库 4个IO对象:ui
cin(istream)
:标准输入 cout(ostream)
:标准输出 cerr(ostream)
:标准错误,输出警告和错误信息 clog(ostream)
:输出程序运行时的通常信息this
输出运算符(<<
)和输入运算符(>>
)的计算结果就是其左值运算对象。.net
写入endl
结束当前行,并将与设备关联的缓冲区(buffer
)刷到设备当中。命令行
注释界定符(/**/
)继承自C
语言。当注释界定符跨越多行时,最好能显式指出其内部的程序行都属于多行注释的一部分:code
/* * * */
注释界定符不能嵌套,而单行注释能够忽略行内任何内容,包括界定符。对象
读取不定量数据while(std::cin >> value)
检测的是cin
,当使用一个istream
对象做为条件时,效果是检测流的状态。当遇到一个文件结束符,或遇到一个无效输入时(类型不符),则istream
对象的状态会变为无效。处于无效的istream
状态会变假。blog
从键盘输入文件结束符:(文件结束符并非回车)从键盘向程序指出文件结束,在Windows
系统中是Ctrl + Z
,而后按Enter
或Return
键。Unix
系统中是Ctrl + D
。
编译器能够查出的错误: 语法错误(syntax error
) 类型错误(type error
) 声明错误(declaration error
):未声明就使用或缺乏命名空间。
#include
包含来自标准库的头文件时,应该用尖括号(<>
)包含头文件名。对于不属于标准库的头文件,则用双引号(""
)包围。
while (cin >> …)
和while(!cin)
能用的缘由: 标准库中:
/** * @brief The quick-and-easy status check. * * This allows you to write constructs such as * "if (!a_stream) ..." and "while (a_stream) ..." */ operator void*() const { return this->fail() ? 0 : const_cast<basic_ios*>(this); } bool operator!() const { return this->fail(); }
函数在while(cin)
或是if(cin)
时被调用,将流对象转换成void *
类型。 bool operator!() const
函数在while(!cin)
或是if(!cin)
时被调用,将流对象转换成bool
类型。 C++
中有特殊的两个操做符能够重载,分别是void*
和!
,即operator void*()
和bool operator!()
。 总结:一个对象a
,对于!a
操做,若是对象重载了!
操做符,则执行重载操做函数,不然先判断是否重载了强制转换操做符(void*)
,并执行强制转换操做符,不然判断是否能直接转换为bool
类型。 (总结摘自CSDN博客)
Windows cmd
下命令行使用文件重定向: 即xx.exe < (数据输入文件)
或xx.exe < (数据输入文件) > (输出文件)