C++输入空格字符串的三种解决方法

 更新时间:2025年04月01日 11:29:44   作者:style-h  
字符串一直是一个重点加难点,很多笔试面试都会涉及,带空格的字符串更是十分常见,现在对字符串的输入问题进行一下总结,本文给大家详细介绍了C++输入空格字符串的三种解决方法,需要的朋友可以参考下

一.gets和fgets

char * gets ( char * str );
char * fgets ( char * str, int num, FILE * stream );

1. gets 是从第⼀个字符开始读取,⼀直读取到 \n 停⽌,但是不会读取 \n ,也就是读取到的内容中没有包含 \n ,但是会在读取到的内容后⾃动加上 \0 。

2. fgets 也是从第⼀个字符开始读取,最多读取 num-1 个字符,最后⼀个位置留给 \0 ,如果num 的⻓度是远⼤于输⼊的字符串⻓度,就会⼀直读取到 \n 停⽌,并且会读取 \n ,将 \n 作为读取到内容的⼀部分,同时在读取到的内容后⾃动加上 \0 。

#include <cstdio>
//⽅案1 
int main()
1
2
3
4{
 char arr[10] = {0};
 gets(arr);
 printf("%s\n", arr);
 return 0;
}
//替代⽅案-⽅法2 
#include <cstdio>
int main()
{
 char arr[10] = {0};
 fgets(arr, sizeof(arr), stdin);
 printf("%s\n", arr);
 return 0;
}

上述两个程序,同样在运⾏起来后,在控制台窗⼝中输⼊: abc def ,按回⻋,⽅案1和⽅案2中arr 数组的内容中差异如下:

二. 还是利用scanf

当然C语⾔中使⽤ scanf 函数其实也能做到读取带有空格的字符串,只是不常⻅⽽已。⽅式就是将 "%s" 改成 "%[^\n]s" ,其中在 % 和 s 之间加上了 [^\n] ,意思是⼀直读取,直到遇到\n ,这样即使遇到空格也就不会结束了。

这种⽅式读取,不会将 \n 读取进来,但是在读取到的字符串末尾加上 \0 。

#include <cstdio>
int main()
{
 char arr[10] = "xxxxxxxx";
 scanf("%[^\n]s", arr);
 printf("%s\n", arr);
 return 0;
}

三. getchar

使⽤ getchar 逐个字符的读取,也是可以读取⼀个字符串的。

#include <cstdio>
int main()
{
 char arr[10] = { 0 };
 int ch = 0;
 int i = 0;
 while ((ch = getchar()) != '\n')
 {
 arr[i++] = ch;
 }
 printf("%s\n", arr);
 return 0;
}

到此这篇关于C++输入空格字符串的三种解决方法的文章就介绍到这了,更多相关C++输入空格字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++实现高校教室管理系统

    C++实现高校教室管理系统

    这篇文章主要为大家详细介绍了C++实现高校教室管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C语言 数据结构与算法之字符串详解

    C语言 数据结构与算法之字符串详解

    这篇文章将带大家深入了解C语言数据结构与算法中的字符串,文中主要是介绍了字符串的定义、字符串的比较以及一些串的抽象数据类型,感兴趣的可以学习一下
    2022-01-01
  • C语言实现制作通讯录(新手推荐)

    C语言实现制作通讯录(新手推荐)

    本文推荐给C语言学习到结构体的新手们,供其练习。这篇文章主要是利用C语言制作一个简单的通讯录功能,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-09-09
  • C++实现动态分配const对象实例

    C++实现动态分配const对象实例

    这篇文章主要介绍了C++实现动态分配const对象实例,包括了const对象的创建、删除及应用实例,需要的朋友可以参考下
    2014-10-10
  • C++多线程编程和同步机制实例演示

    C++多线程编程和同步机制实例演示

    C++中的多线程编程和同步机制使得程序员可以利用计算机的多核心来提高程序的运行效率和性能,本文将介绍多线程编程和同步机制的基本概念和使用方法
    2023-09-09
  • Linux环境下段错误的产生原因及调试方法小结

    Linux环境下段错误的产生原因及调试方法小结

    借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决
    2011-11-11
  • 从汇编看c++中extern关键字的使用

    从汇编看c++中extern关键字的使用

    本篇文章介绍了,在c++中extern关键字的使用概述,需要的朋友参考下
    2013-05-05
  • C语言数据结构 栈的基础操作

    C语言数据结构 栈的基础操作

    这篇文章主要介绍了C语言数据结构 栈的基础操作的相关资料,需要的朋友可以参考下
    2017-05-05
  • C++模拟实现string的方法详解

    C++模拟实现string的方法详解

    标准库类型string表示可变长的字符序列,使用string类型必须首先包含string的头文件。本文将利用C++模拟实现string,需要的可以参考一下
    2022-11-11
  • C++面经之什么是RAII面试问题解析

    C++面经之什么是RAII面试问题解析

    这篇文章主要介绍了C++面经之什么是RAII面试问题解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06

最新评论