字符串的输入

在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;

%字符串的拼接

参考文献:

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180514G1254K00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券