getline(cin, s),cin.getline(s,num)和cin.get(s,num)的区别

编辑:谯胜平      分类:程序与算法      标签:getline()      发布时间:2020-03-10      浏览次数:1288

1、getline(istream cin, string str, [char delim])或getline(输入流,字符串,[结束符])

注意,保存输入的为string字符串,因此需要引入string和iostream头文件。

#include<iostream>
#include<string>
using namespace std;
int main(){
    string str;
    cout << "输入: ";
    getline(cin, str);                //默认结束符为'\n' 
    cout << "输出: " << str << "\n";
    cout << "输入: ";
    getline(cin, str, '?');            //指定结束符为'?' 
    cout << "输出: " << str << "\n";
    return 0;
}

2、cin.getline(char *chr, int num, [char delim])或cin.getline(字符数组,接收长度,[结束符])

这里保存输入的字符采用的是字符数组,接收长度是必须的,num表示在不遇到结束符之前,最多读取num-1个字符。会读取换行符并转换为'\0'进行存储。size需要比输入的字符串长度大才能保证数据正确

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int main(){
    char str[10];
    printf("输入:");
    cin.getline(str, 20);        //size遇到大于输入的字符串长度 
    printf("输出:%s\n", str);
    printf("输入:");
    cin.getline(str, 5, '?');
    printf("输出:%s\n", str);
    return 0;
}

3、cin.get(char *char, int num, [char delim])或cin.get(字符数组,接收长度,[结束符])

用法同cin.getline()类似,唯一的区别是会保留换行符在缓冲区内

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int main(){
    char str[10];
    printf("输入:");
    cin.get(str, 20);        
    printf("输出:%s\n", str);
    printf("输入:");
    cin.get(str, 5, '?');                //这里读取的内容中有一个换行符 
    printf("输出:%s\n", str);
    return 0;
}




看不清?换一个