sizeof运算符指出整个数组的长度; strlen()只计算可见的字符,而不把空字符计算在内。
你会发现,用户根本没有机会输入dessert。 cin如何确定字符串完成的呢? cin使用空白(换行符)来确定字符串的结束,这意味着cin在获取字符数组输入时只读取一个单词。读取该单词后,cin将该字符串放到数组中,并自动在结尾添加空字符。读取第二个字符串时,自动忽略之前的空格。
有时,我们需要输入的内容由多个单词构成,这时cin就不够用了。 我们可以使用
通过回车键的换行符来确定输入结尾。 cin.getline()读取 “输入的内容”+用户按enter键而生成的换行符,并将换行符替换为’\0’存储在数组之中。(cin则不会读取空格和换行符) 但使用时要小心。 混合输入数字和字符串产生的问题:
#include <iostream> using namespace std; int main() { int name1; char name2[8]; cin>>name1; cin.getline(name2,8); cout<<name1<<endl; cout<<name2; }你会发现,用户根本没有机会输入name2。 解决办法: 在 cin>>name1;后插入cin.get();
方法与cin.getline()类似,一样一次读取一行,但是第一个cin.get()不会读取换行符,将它留在输入队列中。 因此第二次调用时,看到的第一个字符就会是换行符。 解决方案:后面一个get()用于读取换行符; 采用变体的方法:cin.get(name,number).get();
在C++头部添加#include<string>,运算时添加#include<cstring>. strcpy(); 复制 strcat(); 附加 strcmp(); 比较字符串是否相等,不等为1,相等为0.
读取输入给string对象。
数组名是第一个元素的地址,cout打印该地址处的字符,然后继续打印后面的字符。 C++中,char数组名,char指针以及用引号括起的字符串都被解释为字符串第一个字符的地址。
一般来说,如果给cout提供一个指针,它将打印地址。但如果指针类型为char*,则cout将显示指向的字符串。
const int a=3; char *p[a]={ "aoe fds", "cat fd", "dodf sfg" };每个元素都是一个char指针,可被初始化为一个字符串的地址。 p[0]指向aoe fds,p[1]指向cat fd… 输出:
for(int i=0;i<a;i++){ cout<<p[i]<endl; }或者
char p[3][10]={ "aoe fds", "cat fd", "dodf sfg" };