53.cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

1.cin

用法1:最基本,也是最常用的用法,输入一个数字:

#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
int main()
{
	int a, b;
	cout << "输入两个数字a和b,用空格或回车隔开" << endl;
	cin >> a >> b;
	cout << a + b << endl;
	system("pause");
	return EXIT_SUCCESS;
}

输入:

2
3

输出:

5

注意:>> 是会过滤掉不可见字符(如 空格 回车,TAB 等)

cin  >>  noskipws  >>input[j];//不想略过空白字符,那就使用 noskipws 流控制

用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束

#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream> 
using namespace std;
int main()
{
	char a[20];
	cout << "请输入一段字符串保存到数组a中:" << endl;
	cin >> a;
	cout << a << endl;
	system("pause");
	return EXIT_SUCCESS;
}

输入:

请输入一段字符串保存到数组a中:
ajhjhjsdahj

输出:

ajhjhjsdahj
请按任意键继续. . .

2.cin.get()

用法1: cin.get(字符变量名)可以用来接收字符

#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
int main()
{
	char ch;
	cout << "输入一个字符用ch保存" << endl;
	ch = cin.get();//或者cin.get(ch);
	cout << ch << endl;

	system("pause");
	return EXIT_SUCCESS;
}

输入:

输入一个字符用ch保存
44444

输出:

4
请按任意键继续. . .

用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
int main()
{
	char a[20];
	cout << "请输入一段字符串(长度小于20)用数组a保存:" << endl;
	cin.get(a, 20);
	cout << a << endl;

	system("pause");
	return EXIT_SUCCESS;
}

输入:

请输入一段字符串(长度小于20)用数组a保存:
ajajdjjjsjsjdjsjidvlsjdfvuaesduio

输出:

ajajdjjjsjsjdjsjidv
请按任意键继续. . .

3.getline()

getline()函数是来完成读入一行数据。

在C++中本质上有两种getline函数:

第一种:在头文件<istream>中,是iostream类的成员函数。

第二种:在头文件<string>中,是普通函数。

(1)在头文件<istream>中,是iostream类的成员函数。

在<istream>中的getline()函数有两种重载形式:

istream& getline (char* s, streamsize n );//作用是: 从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。
istream& getline (char* s, streamsize n, char delim );//还没读够n个字符如果遇到delim 或 字数达到限制,则读取终止,delim都不会被保存进s对应的数组中。

接受一个字符串,可以接收空格并输出

#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
int main()
{
	char m[20];
	cout << "请输入一个字符串,可以接收空格并输出" << endl;
	cin.getline(m, 5);
	cout << m << endl;

	system("pause");
	return EXIT_SUCCESS;
}

输入:

请输入一个字符串,可以接收空格并输出
12 22 22 33

输出:

12 2
请按任意键继续. . .

注意:接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;

cin.getline()实际上有三个参数,cin.getline(接受字符串的m,接受个数5,结束字符)
当第三个参数省略时,系统默认为'\0'
如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入1212时输出1212,输入12a2al时,输出12

(2)在头文件<string>中,是普通函数。

在<string>中的getline函数有四种重载形式:

istream& getline (istream&  is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream&  is, string& str);
istream& getline (istream&& is, string& str);

5、gets()

6、getchar()

参考文章:

[1]C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法 - flatfoosie - 博客园 (cnblogs.com)

[2]C++:cin、cin.getline()、getline()的用法 - AndyJee - 博客园 (cnblogs.com)

[3]C++ getline函数用法 - 萧飞IDO - 博客园 (cnblogs.com)

posted @ 2023-02-07 14:30  CodeMagicianT  阅读(50)  评论(0编辑  收藏  举报