【C/C++】读取字符串的多种方式(带空格)

获取字符、字符串对象、字符串行的多种方式

/**
 * Created By Liu Xianmeng On 2022/12/10
 */
#include <bits/stdc++.h>
using namespace std;
int main(){
    /* 【用法概述】
       (1)只有getline或者cin.getline输入模式,才会吃掉最后的'\n' !!!  而get、cin>>对象、scanf都会保留'\n'
       (2)cin.getling(字符数组名,接收的最长字符数)
       (3)getline(cin, 字符串引用名,结束字符)
       (4)cin>>对象名
     */
    char arr[1000];
    string str;
    char ch;
    cin.getline(arr,1000); // 会把末尾的换行吃掉 下一个getchar()获取不到'\n'
    cin.get(arr,1000); // 获取换行之前的内容 不吃掉换行符 所以下一个getchar()可以获取到'\n'
    cin.get(arr,1000).get(); // cin.get(..).get() -> 后面的get可以吃掉换行符
    getline(cin, str, 'Q'); // 从cin输入流读取字符串 遇到字符'Q'结束(获取字符'Q'之前的所有内容并且吃掉'Q',后面的getchar获取不到'Q')
    getline(cin, str); // 接收一个字符串 遇到'\n'(获取'\n'之前的内容包括 ' '、'\t' ) 并吃掉'\n' 后面的getchar获取不到'\n'
    getline(cin, str); // getline的第二个参数只能传入定义的字符串对象
    cin>>str; // 获取不带空字符的字符串并保留后面遇到的空字符 下一个getchar会捕获到str后面紧跟的空字符
    cin>>str; // 是在输入流获取字符串对象 而scanf("%s", arr);是获取连续的非空字符 前者是C++的string对象模式 后者是C的字符数组存str的模式
    // 我们知道字符串的本质就是字符串数组,C++对其进行了封装,有了string类,所以在C++中,可以对string对象直接操作,而在C语言中,不可以对string对象直接操作,只能间接操作其字符
    scanf("%s", arr); // 必须传入字符数组名 实现的效果和 cin>>str 一样
    ch = getchar(); // 获取一个任意字符
    scanf("%c", &ch); // 获取一个任意字符
    char chs[3];
    scanf("%s", chs); // 获取一个字符chs[0]并用chs[1]吃掉换行符
    printf("下断点进行调试");
    return 0;
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值