C++ Primer 学习笔记(第一章:开始)

##C++ Primer 学习笔记(第一章:开始)ios


[TOC]函数


  1. Windows命令行下运行Visual Studio 编译器:cl /EHsc prog1.cpp,微软编译器会自动生成一个可执行文件prog1.exe学习

  2. 标准库 4个IO对象:ui

cin(istream):标准输入 cout(ostream):标准输出 cerr(ostream):标准错误,输出警告和错误信息 clog(ostream):输出程序运行时的通常信息this

  1. 输出运算符(<<)和输入运算符(>>)的计算结果就是其左值运算对象。.net

  2. 写入endl结束当前行,并将与设备关联的缓冲区(buffer)刷到设备当中。命令行

  3. 注释界定符(/**/)继承自C语言。当注释界定符跨越多行时,最好能显式指出其内部的程序行都属于多行注释的一部分:code

/*
*
*
*/

注释界定符不能嵌套,而单行注释能够忽略行内任何内容,包括界定符。对象

  1. 读取不定量数据while(std::cin >> value)检测的是cin,当使用一个istream对象做为条件时,效果是检测流的状态。当遇到一个文件结束符,或遇到一个无效输入时(类型不符),则istream对象的状态会变为无效。处于无效的istream状态会变假。blog

  2. 从键盘输入文件结束符:(文件结束符并非回车)从键盘向程序指出文件结束,在Windows系统中是Ctrl + Z,而后按EnterReturn键。Unix系统中是Ctrl + D

  3. 编译器能够查出的错误: 语法错误(syntax error) 类型错误(type error) 声明错误(declaration error):未声明就使用或缺乏命名空间。

  4. #include包含来自标准库的头文件时,应该用尖括号(<>)包含头文件名。对于不属于标准库的头文件,则用双引号("")包围。

  5. 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博客

  1. Windows cmd下命令行使用文件重定向: 即xx.exe < (数据输入文件)xx.exe < (数据输入文件) > (输出文件)
相关文章
相关标签/搜索