一、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不带第三个参数。
扩充结论
结论:
-
cin不舍弃换行符,换行符被留置输入流。
-
getline()舍弃换行符,换行符不会被留置输入流。
-
当cin,getline()指定的输入大小没有被超出时,cin.getline()舍弃换行符,换行符不会被留置输入流。而当被超出时,情况比较复杂,基本不能继续进行输入了。
对结论的分析参见这篇文章cin、cin.getline()、getline()与换行符的恩怨情仇
码字不易,如果本文对你有帮助,请给我一个三连支持一下,帮助推荐给更多的朋友,在他们挠头之时给予他们帮助,让他们恍然大悟。》。。。《
哪里不对,欢迎评论探讨!互相进步,愿你我都好!