赋值、拼接和附加
#include<iostream>
#include<string>
using namespace std;
int main()
{
char charr1[100] = "hi ";
char charr2[100] = "csdn";
char charr3[100];
string str1 = "hello ";
string str2 = "world";
string str;
/*赋值操作*/
charr3 = charr1;//错误,根据数组学习,数组之间不可直接赋值
strcpy(charr3,charr1);//正确,赋值charr1给charr3
str = str1;//正确,string是一个类,str为对象,对象之间可以赋值
/*拼接操作*/
str = str1 + str2;//此时str为 "hello world"
/*附加操作*/
strcat(charr1,"xiao mei");//charr1此时为"hi xiao mei"
str1 += str2;//此时str1为"hello world"
}
String的I/O类
getline()函数是面向行输入的,以换行符为结尾,之后丢弃换行符
void String_I0_getline()
{
char charr[20];
string str;
cin.getline(charr,20);//输入一整行字符串给charr,数组长度为20
//输入一整行给str,以换行符结束,并丢弃换行符,比如"hello world"
getline(cin,str);
//也可以一下输入两行值,适用于char数组但不适用于string
//cin.getline()返回的是一个对象,然后对象再调用getline()
char charr1[20];
char charr2[20];
cin.getline(charr1,20).getline(charr2,20);
}
get()函数也具有和getline()相似功能,区别就是get()会把回车符留在输入队列中。
char charr1[20];
char charr2[20];
//以下输入两行后只会得到charr1的值,而charr2为空
//在第一行输入后,按下回车,get()保留换行符,第二个get()会认为这个换行符为本次输入
//所以,第二个get()后,charr2为空
cin.get(charr1,20);
cin.get(charr2,20);
//解决办法如下,加的这个get()来消去第一个get()带来的影响
cin.get(charr1,20);
cin.get();
cin.get(charr2,20);
//还有一种方式如下,解释同上面getline()
cin.get(charr1,20).get();
cin.get(charr2,20);