C/C++ 中输入字符串的几种方式

这篇具有很好参考价值的文章主要介绍了C/C++ 中输入字符串的几种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C/C++ 中输入字符串的几种方式:

scanf,cin,getline,getchar,cin.get,cin.getline

C/C++ 中字符串大致是以下两种:

  1. char a[n] 字符数组类型

  1. string 字符串类型


1.scanf

scanf 只能接收一个字符数组,遇 “空格”“回车”都结束

#include <iostream>
using namespace std;

int main() {
    char s[10];
    scanf("%s", s);
    cout << s;
    return 0;
}

输入:ab c 遇到空格结束
输出:ab

输入:ab[回车]c
输出:ab

2.cin

cin 最常用、最基本的用法,遇 “空格”“回车”都结束

示例一:接收字符数组

#include <iostream>
using namespace std;

int main() {
    char s[10];
    cin >> s;
    cout << s;
    return 0;
}

输入:ab c 遇到空格结束
输出:ab

输入:ab[回车]c
输出:ab

示例二:接收string字符串

#include <iostream>
using namespace std;

int main() {
    string s;
    cin >> s;
    cout << s;
    return 0;
}

输入:ab c 遇到空格结束
输出:ab

输入:ab[回车]c
输出:ab

3.getline

getline 接收一个string字符串,可以接收空格并输出,需包含“#include<string>”头文件

#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    getline(cin, s);
    cout << s;
    return 0;
}

输入:ab c 可以接收空格并输出
输出:ab

输入:ab[回车]c
输出:ab

和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

4.getchar

getchar() :接收一个字符,需包含 "#include<string>" 头文件

#include <iostream>
#include <string>
using namespace std;

int main () {
    char ch;
    ch = getchar(); //不能写成getchar(ch);
    cout << ch << endl;
    return 0;
}

输入:abcabc
输出:a

5.cin.get

用法一:cin.get(字符变量名)可以用来接收字符

#include <iostream>
using namespace std;

int main () {
    char ch;
    ch = cin.get(); //或者cin.get(ch);只能获取一个字符
    cout << ch << endl;
}

输入:abc
输出:a

用法二:cin.get(字符数组名,接收字符数)用来接收一行字符串,可以接收空格

#include <iostream>
using namespace std;

int main () {
    char a[20];
    cin.get(a,20); //有些类似getline。可以输入多个单词,中间空格隔开。
    cout<<a<<endl;
}

输入:abc abc abc
输出:abc abc abc

输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')

用法三:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符, 或者舍弃回车, 弥补cin.get(字符数组名,接收字符数目)的不足

#include <iostream>
using namespace std;
 
int main() {
    char arr[10];
    cin.get(arr,10);
    cin.get();//用于吃掉回车,相当于getchar();
    cout << arr << endl;
    cin.get(arr,5);
    cout << arr << endl;
    return 0;
}
 
输入:abcdefghi
输出:abcdefghi
输入:abcde
输出:abcd
请按任意键继续


#include <iostream>
using namespace std;
 
int main() {
    char arr[10];
    cin.get(arr,10);
    //cin.get();//用于吃掉回车,相当于getchar(); 现在把这行注释掉试试看
    cout << arr << endl;
    cin.get(arr,5);
    cout << arr << endl;
    return 0;
}
 
输入:abcdefghi
输出:abcdefghi
请按任意键继续

6.cin.getline

cin.getline(): 接收一个字符串,可以接收空格并输出文章来源地址https://www.toymoban.com/news/detail-569009.html

#include <iostream>
using namespace std;

int main () {
    char a[20];
    cin.getline(a,5); //与上面基本相同。
    cout << a << endl;
    return 0;
}

输入:jkljkljkl
输出:jklj

接受5个字符到a中,其中最后一个为'\0',所以只看到4个字符输出

7.gets

在提交问题时,不少接收字符串的时候可以用gets函数(以前确实可以),但由于get函数不提供给出足够长的输入字符串时,避免目标数组缓冲区溢出的手段。 
std::gets 于 C++11 被弃用,并于 C++14 移除。

可使用 std::fgets 替代。也就是说现在只要用C++11及以后版本的标准,gets函数都不能再用了


不过,我们可以使用
#define gets(S) fgets(S,sizeof(S),stdin) 作为兼容性宏替换。

到了这里,关于C/C++ 中输入字符串的几种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常用的将Java的String字符串转具体对象的几种方式

    Java对象以User.class为例 ,注意:代码中使用到了lombok的@Data注解 以上就是常用的几种String转具体的java对象操作

    2024年04月11日
    浏览(53)
  • C#删除字符串最后一个字符的几种方法

    字符串:string s = \\\"1,2,3,4,5,\\\" 目标:删除最后一个 \\\",\\\" 方法一: s = s.Remove(s.LastIndexOf(\\\",\\\"), 1); ; //移除掉最后一个\\\",\\\" 方法二:用的最多的是Substring,这个也是我一直用的 s = s.Substring(0,s.Length - 1) 方法三:用TrimEnd,这个东西传递的是一个字符数组 s=s.TrimEnd(\\\',\\\') //如果要删除\\\"5,\\\",则需

    2023年04月21日
    浏览(49)
  • JAVA 截取字符串的几种方法

    主要有以下几种方法: 1、通过subString()方法来进行字符串截取(最常用) 2、通过StringUtils提供的方法 3、split()+正则表达式来进行截取 1、通过subString()方法来进行字符串截取,返回字符串中的子字符串,在java中有两种用法 第一种,传递一个参数: 第二种,传递两个参数:

    2024年02月10日
    浏览(45)
  • Java中去除字符串空格的几种方法

    1、String.trim(): 它去掉的只是String首尾空格,内部不处理; 2、str.replace(\\\" \\\", “”): 去掉所有空格,包括首尾、中间,但是又仅仅局限于一个空格 3、str.replaceAll(\\\" +\\\",\\\"\\\") : 可以匹配去掉所有空格 4、str.replaceAll(\\\"s*\\\", “”): 可以替换大部分空白字符, 不限于空格 s 可以匹配空

    2024年02月01日
    浏览(43)
  • fastjson json字符串转map的几种方法

    参考:fastjson将json字符串转化成map的五种方法 - 何其小静 - 博客园 (cnblogs.com) 源码: 第一种 Map maps = (Map)JSON.parse(str); 第二种 Map mapTypes = JSON.parseObject(str); JSONObject实现了Map,所以可以用Map接收 

    2024年02月16日
    浏览(42)
  • List转换String字符串几种方式

    1、传统循环并拼接的方式 2、Java8 String.join()  StringUtils.join() 和 String.join()用途:将数组或集合以某拼接符拼接到一起形成新的字符串。 这里和StringUtils.join()有区别,参数顺序不一样,另外,StringUtils.join()可以传入Integer或者其他类型的集合或数组,而String.join()尽可以传入实

    2024年02月14日
    浏览(48)
  • 关于C++的数组或者字符串的输入问题

    一、数组输入: 1:数组个数未知 2:数组个数已知 (1) vector int num(N,1); //表示N个数组元素且初始值都为1; (2) vector int num; 3:动态数组 二、字符串输入 1:多个字符串string: 2:单个单词 2.1 单词或者句子拆成一个个字母 或者:

    2024年02月11日
    浏览(45)
  • C语言:数组、字符串知识点整理:

    补充 :数组长度= sizeof(arr)/sizeof(arr[0]) 注意: !!! 不适用于当arr 充当形参时(函数传参) !!! 因为函数 传递 的是 int arr[0] 的 地址(指针) ,而 不是数组内容 , 若在此情况计算整形数组长度         在X86系统下,指针大小为 4 ,所以计算结果为4/4=1;       

    2024年03月10日
    浏览(61)
  • C语言零碎知识点之字符串数组

    在C语言中字符串数组有两种表示方法: 第一种, 二维字符数组 可以利用二维字符数组来表示字符串,格式是: char strs[row][col]; 。例如: 其中的 row 表示二维数组中的行,表示有几个字符串;而 col 表示二维数组中的列,表示能存放字符串的最大长度。 第二种, 字符指针数

    2024年01月18日
    浏览(50)
  • python蓝桥杯备考——字符串小知识点

    \\\' \\\'.join(str(k) for k in sorted(set(factors))) 是一个用于将列表中的元素连接成一个字符串的常见用法。 下面对其含义和用法进行解释: set(factors) : 这一步将列表 factors 转换为集合(set),以去除重复的元素。这样可以确保最终连接的字符串中不会有重复的元素。 sorted(set(factors)) :

    2024年01月24日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包