C++学习笔记之String类及geltine()和get()使用

赋值、拼接和附加

#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);
发布了5 篇原创文章 · 获赞 5 · 访问量 154

猜你喜欢

转载自blog.csdn.net/Phil0624/article/details/104119455