18:字符串-char型字符串
1 什么是字符串? 字符串是以空字符(\0)结尾的字符数组。
空字符的assii码为:0, 空格的ascii码为32
2 \0的作用
'\0'是一个空字符标志,它的ASSII码为0,C++有好多处理字符串的函数,都以'\0'为结束标记。
也就是以空字符为结束标记,比如cin,cout。它们都以空字符为结束标记,他们在遇到空字符后将会停止输入或输出。
3 cin.ignore()
cin.ignore(a,ch) 从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,
它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin.ignore()函数执行终止;否则,它继续等待
默认参数为cin.ignore(1,EOF),即把EOF前的1个字符清掉,没有遇到EOF就清掉一个字符
它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响.
4 cin.get(char[], n) 的结束标记是 \n 换行符。因此遇到空白字符(空格,tab)不会结束。同时在输入结束后,也就是用户输入第一个回车后,cin.get自动为
当前接受的输入的数组添加字符串结束标记 \0, 因此它实际保存的有效字符是它的第二个参数减1.
5 cin遇到不可见字符(制表符和空格)和空字符('\0')就停止输入。
cout则只是遇到空字符才停止输出。0
6 char man[] = {"a "} 是一种简写,隐含了字符串结束标记\0 char m[] = {'a', 32, 'b', '\0'};
7 计算字符串长度时,不要忘记最后的空字符'\0' strlen(char型字符串)是计算可见字符的长度(不包括 ascii 0) sizeof(是计算字符串的长度)(含asscii0)
#include <iostream> using namespace std; int main() { { cout << "字符数组" << endl; char man[4] = {'J', 'a', 'c', 'k'}; cout << man << endl; cout << "----------------" << endl; } { cout << "字符串" << endl; char man[] = {'J', 'a', 'c', 'k', '\0'}; cout << man << endl; } { cout << "空字符的作用" << endl; char man[12]; cin >> man; cout << man << endl; } { char man[12]; cin.ignore(1024, '\n'); //cin.ignore(); cin.get(man, 12); cout << man << endl; } { char man[12]; cin.ignore(1024, '\n'); //cin.ignore(); cin.get(man, 11); cout << man << endl; } { char m[] = {'a', 32, 'b', '\0'}; cout << m << endl; cout << "----------------" << endl; } { char man[] = {"a b"}; cout << man << endl; } { char man[12] = {"hello world"}; cout << man << endl; cout << "strlen(man)=" << strlen(man) << endl; cout << "sizeof(man)=" << sizeof(man) << endl; man[6] = '\0'; cout << "strlen(man)=" << strlen(man) << endl; cout << "sizeof(man)=" << sizeof(man) << endl; } return 0; } /* vim: set ts=4 sw=4 sts=4 tw=100 */