几种输入字符串的方法

一、cin


用法一:
最基本,也是最常用的用法,输入一个数字。
输入:2[回车]3[回车]  
输出:5
#include <iostream>
using namespace std;
int main ()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
}

用法二:

接受一个字符串,遇“空格”、“TAB”、“回车”都结束。
输入:jkljkljkl
输出:jkljkljkl
输入:jkljkl jkljkl //遇空格结束,所以不能输入多个单词
输出:jkljkl
#include <iostream>
using namespace std;
int main ()
{
char a[20];
cin>>a;
cout<<a<<endl;
}

二、cin.getline()


cin.getline(参数一,参数二,参数三)。

第一个参数为字符数组名,表示接受到哪个字符数组中。
第二个参数表示接受的字符数量。不要忘记换行符也占一个数量
第三个参数为接受结束的标志,不指定为换行符\n。
参数一和参数二必须写,参数三不强制。

用法一:

在一维字符数组中,参数一即为字符数组名。
输入:My First String
输出:My First String
#include <iostream>
#include<string>
using namespace std;
int main()
{
	char chs[20];
	cin.getline(chs,18);
	cout << chs;
}
输入:Hello World
输出:Hello Worl
#include <iostream>
#include<string>
using namespace std;
int main()
{
	char chs[20];
	cin.getline(chs,11);
	cout << chs;
}

用法二:

在二维数组也可以使用。
输入:My First String 
	 My Second String
输出:My First String 
	 My Second String
#include <iostream>
#include<string>
using namespace std;
int main()
{
	char chs[2][20];
	for(int i=0;i<2;++i) cin.getline(chs[i], 20);
	for (int i = 0; i < 2; ++i) cout << chs[i]<<endl;
}

三、cin.get()


用法一:
cin.get(字符变量名)可以用来接收字符。
输入:jljkljkl
输出:j
#include <iostream>
using namespace std;
int main ()
{
char ch;
ch=cin.get(); //或者cin.get(ch);只能获取一个字符
cout<<ch<<endl;
}

用法二:

cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格。
输入:jkl jkl jkl
输出:jkl jkl jkl
输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')
#include <iostream>
using namespace std;
int main ()
{
char a[20];
cin.get(a,20); //有些类似getline。可以输入多个单词,中间空格隔开。
cout<<a<<endl;
}

用法三:

cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补getline的不足,用法与cin.ignore()类似。
输入:5【换行】Hello World!
输出:5 Hello World!

#include <iostream>
#include<string>

using namespace std;
int main ()
{
int num;
string str;
cin>>num;cin.get();getline(cin,str);
cout<<num<<endl<<str;
}

四、getline()


接受一个字符串可以接受空格,遇换行结束。包含在string头文件中
	getline ( istream &is , string &str , char delim );
  • ostringstream : 用于执行 C 风格字符串的输出操作。
  • istringstream : 用于执行 C 风格字符串的输入操作。
  • stringstream : 同时支持 C 风格字符串的输入输出操
    第一个参数为 is 表示一个 istringstream
    第二个参数表示我们要将字符串分割的结果通过 getline 逐个放入 str 中
    第三个参数为分隔符,注意分隔符只能为字符型。(不是必须)
    输入:Hello World!
    输出:Hello World!
#include <iostream>
#include<string>
using namespace std;
int main()
{
	string str;
	getline(cin, str);
	cout << str;
}

注意:getline和cin一起使用时,每次使用cin都要cin.ignore()手动清除输入流中的换行符。相关内容:C++中getline()和cin()同时使用时的注意事项

或者搭配cin.get()使用相当于将换行输入到cin.get()中。

五、getchar()


接受一个字符。包含头文件string
输入:A B
输出:A
#include <iostream>
#include<string>
using namespace std;
int main()
{
	char ch;
	ch=getchar();
	cout << ch;
}

六、gets()


用法与cin.getline()一样只不过gets不带第三个参数。

扩充结论


结论:

  1. cin不舍弃换行符,换行符被留置输入流。

  2. getline()舍弃换行符,换行符不会被留置输入流。

  3. 当cin,getline()指定的输入大小没有被超出时,cin.getline()舍弃换行符,换行符不会被留置输入流。而当被超出时,情况比较复杂,基本不能继续进行输入了。

对结论的分析参见这篇文章cin、cin.getline()、getline()与换行符的恩怨情仇

码字不易,如果本文对你有帮助,请给我一个三连支持一下,帮助推荐给更多的朋友,在他们挠头之时给予他们帮助,让他们恍然大悟。》。。。《
哪里不对,欢迎评论探讨!互相进步,愿你我都好!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撑一把纸伞.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值