在C++中,字符串的输入有好几种方法,下面针对不同输入对象就两种最常见的输入方式做一下简单的比较。
情况一:采用字符数组储存输入的字符串
首先在程序的开头部分声明要引用的类,并且为了方便后续的操作声明使用相应的名称空间。
#include
using namespace std;
1.输入的是一个单词(不包含空格)
char word[20];
cin>>word;
直接输入并采用cin将输入的单词储存在word字符串数组中。需要注意的是,需要提前规定该数组的空间。使用cin输入的时候,cin使用空格、制表符、换行符来确定字符串的结束位置。在c++中如果你输入了一连串的字符,那么这些字符将会按照你的输入顺序依次排列在待读取队列中。当cin读取到空白、制表符、换行符时,就认为该字符串读取完毕了,下一个cin将会从完毕的位置继续读取。
2.输入的是一行字符(包含空格)
2.1使用getline读取一行字符
char sentence[80];
cin.getline(sentence,80);
getline()函数用来读取一整行,它通过回车键输入的换行符来确定输入尾。cin.getline()有两个输入参数,由逗号隔开。第一个参数是变量名称,第二个参数是输入的字符个数。如果第二个参数为20,则该函数最多读取19个字符。在使用getline()读取完毕后,自动将换行符从待读取队列中丢弃。因此在读取下一行字符数时,从换行符之后的字符开始
2.2使用get()读取一行字符
char sentence[80];
cin.get(sentence,80);
get()与getline()最大的区别是,当get读取完一行字符时,不会丢弃换行符,会将换行符保留在待读取序列中,等待输入。如果下面还有一个行读取命令时,会将该换行符作为新的一行读取。可以采用get()函数读取该换行符
cin.get(sentence,80).get();
在前后字符输入分别为数字和字符时,尤其要注意将数字后面的换行符提取出来,否则会影响后面字符的输入与读取。
3.getline()与get()函数的几种变体形式
cin.get().get()
%将换行符也读取,防止影响下一行;
cin.getline(name1,Arsize).cin.getline(name2,Arsize);
%连续将输入中的两行读入数组name1和name2中。
情况二:使用string类进行字符串的操作
在使用string类时需要在程序的开头位置提前声明引用类string
#include
#include
using namespace std;
1.输入的是一个单词
string str1;
cin>>str1;
像输入整形数字一样直接把字符串读取到string变量str1中,无需预先定义储存空间,因为会自动分配空间。
2.输入的是一行字符
string str1;
getline(cin,str1);
使用getline()函数将一行字符自动存入到str1中,相对于字符数组的储存方式,不用担心储存空间不足的情况。
3.string的其他操作
str3=str1+str2;
%字符串的拼接
参考文献:
领取专属 10元无门槛券
私享最新 技术干货