基础的输入与输出

  1. 输出工具cout

    1
    cout << "Hello World"; // 输出Hello World  

    cout可根据变量类型自动识别输出格式,免去printf中要使用的如%d的格式控制符。

  2. 换行符endl

    1
    cout << "Hello World" << endl; // 输出Hello World并换行  

    等效于输出"\n"

  3. 输入工具cin

    1
    2
    int a;  
    cin >> a; // 输入a的值

    cin根据变量类型自动识别输入格式,免去scanf中要使用的如%d的格式控制符。

  4. 插入运算符<<>>

    指明信息流动的路径

    cout是一个ostream类对象,cin是istream类对象,它们都定义在iostream头文件中。要使用cout和cin,必须在程序开头包含iostream头文件,并使用using namespace std;编译指令使std名称空间内的名称可用。

数据处理

  1. {}方式初始化时进行的转换

    也被称为统一初始化列表初始化 ,旨在为各种类型的初始化提供一套统一且更安全的语法。在类型转换方面,它引入了更严格的检查规则。

    其禁止窄化转换 (即可能导致数据丢失的转换),但允许安全转换(不会导致数据丢失)。

  2. 强制类型转换
    强制类型转换不会改变变量本身,而是返回一个转换后的新值。

    1
    2
    (type) value;  
    type (value);

    C++还引入了4个强制类型转换符,其使用要求更为严格:

    1. static_cast<>表示方式:
      1
      static_cast<typeName> (thorn)  
    2. 等待补充
  3. C++11新增的auto关键字

    1
    auto item = value;  

    编译器根据初始化表达式推断变量的类型。该声明方式适合处理复杂的类型,如STL(标准模块库)容器类型。

字符串

  1. \0表示空字符,用于标记字符串的结尾,不以\0结尾的只能被称为字符数组而非字符串。可用插入\0的方式截断字符串。

  2. 读取字符输入的函数:

    in C:

    1. gets(char *str)

读取整行输入直到遇到换行符,同时添加空字符使其成为字符串。gets函数不检查缓冲区是否溢出,故已在新标准中被废除。(对应的puts()会在字符串末尾自动添加换行符)

  1. fgets(char* str,int n,FILE *stream):
    读取到n-1个字符或遇到换行符时停止,其将换行符一并读入数组中 。(对应的fputs()不会在末尾添加换行符)
  2. gets_s(char *str,rsize_t n)
    增加一个参数限制读取长度,其余与gets一致。
  3. s_gets(char *str,int n)
    自定义函数,为fgets添加替换换行符为空字符的功能。
in C++:
  1. `cin.getline(char*str,int n)`:读取整行,第二个参数为要读取的字符数,当其为n,函数最多读取n-1个字符,最后一个字符设置为空字符,该成员函数在读取指定书目的字符或遇到换行符时停止读取。
  2. `cin.get(char*str,int n)`:读取到行尾,但是该成员函数读取到换行符时停止,**换行符被留在缓冲区中** 。其另一种用法是不带任何参数时调用,只读取一个字符(包括换行符),可用于处理换行符,为下一行输入做准备。
  3. `getline(cin,str)`:其不是istream类的类方法,将cin作为参数表明其到何处查找输入,其也无需指出长度,因为其接受的输入Str是string对象,会自动调整大小。
  1. string类

    需包含string头文件(不是cstring或string.h),其初始化操作(包括列表初始化)、使用cin/cout进行输入输出、用数组表示法访问其中字符的方式与C风格字符串相同。

    区别:

    1. 可将string对象声明为简单变量,可突破不能将一个数组赋值给另一个数组的限制。
    2. 其简化了字符串合并操作,可使用加法运算符 将两个字符串连接 起来。而且string可自动调整大小,不用关心长度。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      #include <iostream>  
      #include <string>
      #include <cstring>
      using namespace std;
      int main() {
      // C 风格字符串
      char str1[20] = "Hello";
      strcat(str1, " World"); // 拼接,需保证数组够大
      cout << str1 << endl;
      // C++ string
      string str2 = "Hello";
      str2 += " World"; // 自动扩展,无需关心长度
      cout << str2 << endl;
      return 0;
      }
  2. 其他形式的字符串字面值
    除char类型外,C++还支持wchar_t、char16_t和char32_t类型的字符串字面值。这些字符串字面值的前缀分别是L、u和U。表示示例如下:

    1
    2
    3
    wchar_t title[]=L"hello";   // 宽字符字符串  
    char16_t name[]=u"hello"; // Unicode字符16位字符串
    char32_t car[]=U"hello"; // Unicode字符32位字符串

    还有一种新增的类型是原始字符串raw,字符表示自己而不进行转义,其前缀为R,表示示例如下:

    1
    const char* quote = R"(Jim "King" Smith)";  

杂项

  1. sqrt()函数
    返回平方根