一、cin输入字符串、cout输出字符串
-
cin输入字符串以空格/换行符为分割点
例如:cin>>str1>>str2;
输入:hello world 或者 hello换行符world,即str1 = "hello, str2 = "world"
输入:helloworld,即str1 = "helloworld"
小结:cin是面对单个单词或字符的输入,不是面对一整行的输入 -
cout输出字符串从该字符串的首地址开始打印,直到遇到空字符为止
例如:cout << "a good boy";
输出a good boy
在C++中,用引号括起来的字符串像数组名一样,也是第一个元素的地址。
二、未被初始化的string对象的长度自动设置为0
例如:
string str;
cout << str.size(); //输出结果为0
PS: string对象根据字符串的长度自动调整自己的大小!!!
三、cout在现实bool值之前会将他们转换为int,但是cout.setf(ios::boolalpha);函数调用设置了一个标记,该标记命令cout显示true和false,而不是0和1。
例如
int x = 1;
cout.setf(ios::boolalpha);
cout << (x < 3);
// 输出:true
四、递增递减操作符(++/–)与指针取值操作符(*)的优先级
- 前缀操作符与取值操作符*在一起
前缀递增、前缀递减和取值操作符优先级一样,以从右往左的方式进行结合。
例如:
int arr[3] = { 1, 2, 3 };
int *p = arr;
cout << *++p << endl;
分析:p指向arr[0]元素的指针,*与前缀递增在一起,优先级相同,所以先将++应用于p,此时p指向第二个元素arr[1], 然后将 * 应用于递增后的p,即 *++p = 2; - 后缀操作符与取值操作符*在一起
后缀递增、后缀递减比取值操作符优先级高。
例如:
int arr[3] = { 1, 2, 3 };
int *p = arr;
cout << *p++<< endl;
分析:后缀操作符++的优先级更高,所以先执行p++,因为时后缀,所以此时p仍然指向的的时第一个元素,因此 * p++ = *(p++) = 1;
五、strcpy()函数
- strcpy()函数接受两个字符串地址作为参数