C++ 最常用的几种字符串输入方法

在刷题过程中经常会遇到一些字符串输入的问题,在此做一些常用方法的整理,这里主要讲讲需要整行输入的情况


目录

1.cin

2.cin.get()

3.cin.getline()

4.getline()


1.cin

用法:接受一个字符串,遇“空格”、“回车”都结束。可配合循环依次读取单词

char s[10];
while(cin>>s){
    cout<<s<<" ";
}

2.cin.get()

用法A:读取一个字符

char ch;
ch=cin.get(); 
//cin.get(ch); //效果同上,都只能读取一个字符
cout<<ch;

# 输入
abc
# 输出
a

用法B:cin.get(接收者s,长度n)

最多读取 n-1 位字符 + '\0' (这里 ‘\0'是终止符,是所有字符串的结尾标配)

遇到回车时结束,并将'\n'回车符保留在输入队列

char s[10];
cin.get(s,5);
cout<<s;

# 输入
1 3456
# 输出 (只有4位,中间弄了个空格为了证明读取不受空格影响)
1 34

*注意,当cin.get()连续读取多行,连续写就会出错,因为第二个cin.get()会读取保留的回车符然后结束

char s[10];
char b[10];
	
cin.get(s,8);
cin.get(b,5);
cout<<"s "<<s<<endl;;
cout<<"b "<<b;

# 输入
123
# 输出 (按了一次回车就结束了,根本不给输入第二行的机会T_T)
s 123
b

========正确写法========
char s[10];
char b[10];
	
cin.get(s,8);
cin.get();    // 变化在这,就多了这一行,相当于吃掉了那个回车符
cin.get(b,5);
cout<<"s "<<s<<endl;;
cout<<"b "<<b;

# 输入
123
456
# 输出 (这次输完第一行按下回车后,还有机会输入第二行)
s 123
b 456

3.cin.getline()

用法:cin.getline(接收者s,长度n)

最多读取 n-1 位字符 + '\0' (这里 ‘\0'是终止符,是所有字符串的结尾标配)

遇到回车时结束,与上条不同的是,会丢弃回车符

这就使得它用起来相对省心啦,可以连着写,妈妈再也不用担心我出bug了

char s[10];
char b[10];
	
cin.getline(s,5);
cin.getline(b,5);
cout<<"s "<<s<<endl;;
cout<<"b "<<b;

# 输入
123
456789
# 输出 
s 123
b 4567

4.getline()

用法:getline(cin, string s)

该函数要配合string库食用... 记得导入 string库

#include<string>

...

string a,b;
getline(cin,a);
getline(cin,b);
cout<<"a "<<a<<endl;;
cout<<"b "<<b;

# 输入
1234
ha ha
# 输出
a 1234
b ha ha

**注意

所有的代码都只是保留了主干部分,运行要放进main函数里啊 /捂脸

猜你喜欢

转载自blog.csdn.net/xzy5210123/article/details/81612762