C++中cin、cin.getline()、getline()、cin.get()的用法

cin用法

用法:接收一个字符串,一个数字或一个字符,遇“空格”、“TAB”、“回车”就结束

#include <iostream>
using namespace std;
int main()
{
    
    
	char st[100];
	while (cin >> st)
		cout<<st<<endl;
	return 0;
}

在这里插入图片描述

cin.getline()用法

用法:接收一个字符串,可以接收空格并输出

#include <iostream>
using namespace std;
int main()
{
    
    
	char m[20];
	cin.getline(m, 5);
	cout << m << endl;
	return 0;
}

在这里插入图片描述
接收5个字符到m中,其中最后一个为’\0’,所以只看到4个字符输出;
总结:
1、cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符);
2、当第三个参数省略时,系统默认为’\0’;
3、如果将例子中cin.getline()改为cin.getline(m,5,‘a’);当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

getline()用法

用法:接收一个字符串,可以接收空格并输出,需包含头文件,但是不能接受字符数组,如果把代码中的string改成char.则会报错。

#include<iostream>
#include<string>
using namespace std;
int main()
{
    
    
	string str;
	while(getline(cin, str))
	cout << str << endl;
	return 0;
}

在这里插入图片描述

cin.get()的用法

#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
    
    
	char s[100];
	cin.get(s, 10);
		cout<<s<<endl;
	return 0;
}

在这里插入图片描述
注意:cin.get()对string不适用,用法大致与cin.getline()类似。

注意的问题

1、cin.getline()属于iostream流,而getline()属于string流,是不一样的两个函数

2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过
str="\n";
getline(cin,str);
的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。
例如:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    
    
    int age;
    cout << "请输入你的年龄: ";
    cin >> age;
    cout << "你的年龄是: " << age << "\n";
    string mystr;
    cout << "What's your name? " << endl;
    mystr = "\n";
    getline(cin, mystr);
    getline(cin, mystr);
    cout << "Hello," << mystr << "\n";
    return 0;
}

在这里插入图片描述
若不加:mystr="\n";
getline(cin,mystr);则会出现下列情况
在这里插入图片描述
3.c++中要使用gets和puts,则要puts_s()和gets_s(),对string不适用。
以上可能有错,请多指教

猜你喜欢

转载自blog.csdn.net/qq_52297656/article/details/119852131