1.c++的基本类型分为2类:一组由存储为整数的值组成;一组有存储为浮点格式的值组成
char:c++中char字符是以整型存储于内存
string:(1)string并不是简单类型,是复合类型
(2)string是一个类。
注意:c风格的字符串: char ch[]={'y','a','o','\0'};//该处是c风格字符串
char ch2[10]="sheng";//该处不是c风格的字符串,c风格的字符串必须以\0结尾,该处甚至只是字符数组。
备注:在notepad++中运行前不要忘记保存修改内容,坑死爹。
2.string提供函数s.c_str()将string类型转换为char类型
const char *str=s.c_str();//c_str()函数返回const char*类型,不能赋值或初始化char*,char数组。
3.c++提供的cin,cout流输入输出。
(1) 输入
在上述程序中cin.get()或cin.getline暂未确定和getline()均被直接跳过。(string版本的getlian函数有指定分界符的版本)
输出为:
此时可确定为cin.getline()未成功输入。
char数组的输入:
cin的工作原理:cin使用空白(空格,制表符和换行符)确定字符串的结束位置,这意味着cin在获取字符数组输入时只读取一个单词,读取该单词后,cin将字符放入数组中,并自动在结尾添加空字符。这意味着输入wo shi 时 cin只能输入wo,shi将被留在输入队列中等待下一次cin,赋值给字符串。
cin.getline()
:面向行的输入,cin读取单词,而cin.getline输入整行,它通过回车键输入的换行符确定输入结尾
cin.get():原理同cin.getline,但在结束时会将换行符留在输入队列中,下次使用cin.get(变量名,字符串)将直接跳过。
get()有其他版本(1)cin.get(变量名,字符串)(2)cin.get()无参:该方法读取输入队列下一个字符,可通过该方法读掉换行符。
回到上述问题,判断应该由于cin输入时回车符结束被留存在输入队列中。解决方法 ,通过cin.get()读掉换行符。
调试成功
该案例也说明cin在输入时,结束时的换行符被留在了输入队列中。
我们将cin.getline()在cin前使用:
运行成功: