目录
#字符串常量的拼接的两种方法
有时候字符串太长,无法放到一行中。C++允许拼接字符串字面值,即用两个用引号括起来的字符串合并成一个。通俗点讲就是任何两个由空白(空格,换行符,制表符)分隔的字符串常量都将自动拼接成一个
cout << "I'd give my right arm to be"" a great violinist.\n";
cout << "I'd give my right ar"
"m to be a great violinist.\n";
#在数组中使用字符串的两种方法
#将数组初始化为字符串常量
char name2[size] = "C++";
#将键盘或者文件输入读入到数组中
char name1[size];
cin >> name1;
#strlen()函数的使用
使用前应用头文件include<cstring>提供字符串函数的声明
#include<iostream>
#include<cstring>//用strlen()函数
int main()
{
using namespace std;
const int size = 15;
char name1[size];
char name2[size] = "C++";
cout << "Howdy!I'm " << name2;
cout << "!What's your name?\n";
cin >> name1;
cout << "Well," << name1 << ",your name has ";
cout << strlen(name1) << " letters and is stored\n";
cout << "in an array of " << sizeof(name1) << " bytes.\n";
cout << "Your initial is " << name1[0] << ".\n";
name2[3] = '\0';
cout << "Here are the first 3 character of my name:";
cout << name2 << endl;
return 0;
}
上面程序需注意的是,sizeof和strlen函数的不同,sizeof运算符指出整个数组的长度,但是strlen函数返回的是数组中字符串的长度,而不是数组本身的长度
#字符串的输入
#字符串输入的问题
当我们使用cin输入字符串中的时候,cin使用空白来确定字符串的结束位置,当一个字符串有空格时,下一个单词会留在输入表列中,当使用下一个cin时,发现的是上面cin遗留下来的单词,并把它放置到下一个数组中去,就导致下一个字符串没地方输入。
#面向行的输入getline()
getline()函数读取整行,通过回车键输入的换行符来确定输入结尾。要调用的话我们使用cin.getline(数组名称,要读取的字符数)
cin.getline(name, Arsize);
getline使用过后会丢弃换行符
#面向行的输入get()
get()和getline不一样,get不再读取并丢弃换行符,而是将其留在输入队列里。如果连续调用get,第一次调用后,换行符留在输入队列,因此第二次看到调用看到的第一字符就是换行符,get就认为已经到达行尾,而没有发现任何可读取的内容。
解决办法:
法一:
cin.get(name, Arsize);
cin.get();
cin.get(dessert, Arsize);
法二:
cin.get(name, Arsize).get();
cin.get(dessert, Arsize);
#混合输入字符串和数字
当我们先输入了一个整数时,由上面我们可以知道,输入cin后,会有一个回车键在输入队列中,后面调用cin.getline的时候读到的第一个字符是换行符,这样getline会以为这行结束了,并将一个空字符串赋给下一个数组。
解决办法:
cin>>year;
cin.get();
(cin>>year).get();
这样就可以解决回车的问题喽!