当前位置: 代码迷 >> 综合 >> C++中cin、cin.getline()、getline()、cin.get()的用法
  详细解决方案

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

热度:35   发布时间:2023-11-23 03:58:49.0

文章目录

  • 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不适用。
以上可能有错,请多指教

  相关解决方案