C++关于字符的接收与输出操作示例

C语言中,在使用scanf("%c",&data);读取一个字符时,有时会遇到scanf吞回车符的情况。 这里搜到几种常用的解决方法:

1.在scanf()中使用’\n’屏蔽回车符号。

scanf("\n%c",&c);

2.在scanf()格式串最前面添加空格,屏蔽回车字符

scanf(" %c",&c); //%c前面加空格,过滤回车

3.在接收字符前,使用getchar()来读取一次回车符号

getchar(); //专门用来读取上次输入的回车符号
scanf("%c",&c);

4.在接收字符前,使用fflush()清空输入流中缓冲区中的内容

fflush(stdin); //清空输入流缓冲区的字符,注意必须引入#include<stdlib.h>头文件
scanf("%c",&c);

C++中输出字符数组时的常见问题:

例1:

#include<iostream>
using namespace std;
int main()
{
	char a[8];
	for (int i = 0; i < 8; i++)
		cin >> a[i];
	cout << a << endl;
	return 0;
}

运行结果:

分析:输出时出现汉字乱码 原因:字符数组里存放内容没有字符结束标志 ‘\0’

解决方法:

#include<iostream>
using namespace std;
int main()
{
	char a[8];
	for (int i = 0; i < 8; i++)
		cin >> a[i];
	a[8] = '\0'; //最后留一个位置给'\0'
	cout << a << endl;
	return 0;
}

运行结果:

分析:在字符串的末尾手动加’\0’,此时循环遇到’\0’即结束,不会出现汉字乱码

例2:

#include<iostream>
using namespace std;
int main()
{
	char words[] = { 'a', 'b', 'c', 'd', 'e' };
	cout << words << endl;
	return 0;
}

同例1情况,字符数组末尾没有’\0’作为结束,会出现汉字乱码

解决方法:手动在数组末尾加’\0’

#include<iostream>
using namespace std;
int main()
{
	char words[] = { 'a', 'b', 'c', 'd', 'e','\0' };
	cout << words << endl;
	return 0;
}

以上两种方法都需要自己手动加’\0’,也可以使用另外两种系统自动加’\0’的方法

方法1:直接用cin输入字符数组,最后系统会自动加上\0空字符,且它占数组的一个char内存

#include<iostream>
using namespace std;
int main()
{
	char a[9];
	cin >> a ;//最后会自动加上\0空字符,且它占数组的一个char内存
	cout << a  << endl;
	return 0;
}

方法2:运用get()函数或getline函数,同样最后系统会自动加上\0空字符,且它占数组的一个char内存

#include<iostream>
using namespace std;
int main()
{
	char ch[50];
	cin.getline(ch, 30);//可以换成cin.get(ch, 30)
	cout << ch << endl;
	return 0;
}

到此这篇关于C++关于字符的接收与输出操作示例的文章就介绍到这了,更多相关C++字符接收与输出内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C++超详细讲解字符串类

    目录 一.历史遗留问题 二.解决方案 三.标准库中的字符串类 四.字符串循环右移 五.小结 一.历史遗留问题 C 语言不支持真正意义上的字符串 C 语言用字符数组和一组函数实现字符串操作 C 语言不支持自定义类型,因此无法获得字符串类型 二.解决方案 从 C 到 C++ 的进化过程引入了自定义类型 在 C++ 中可以通过类完成字符串类型的定义 三.标准库中的字符串类 C++ 语言直接支持 C 语言的所有概念 C++ 语言中没有原生的字符串类型 C++ 标准库提供了 string 类型 strin

  • C++实现字符串切割的两种方法

    目录 字符串切割的两种方法 1.通过stl实现 2.通过使用strtok()函数实现 字符串分割&类型转换(string->double) 字符串切割的两种方法 字符串切割的使用频率还是挺高的,string本身没有提供切割的方法,但可以使用stl提供的封装进行实现或者通过c函数strtok()函数实现. 1.通过stl实现 涉及到string类的两个函数find和substr: 1.find函数 原型:size_t find ( const string& str, size_t p

  • 详解C/C++实现各种字符转换方法合集

    目录 一.std::string 和 std::wstring 互转 1.直接声明std::wstring 2.wstring_convert 3.WideCharToMultiByte和MultiByteToWideChar 二.winrt::hstring 和 std::string 互转 三.const char* 和 char* 互转 1.const char*转char* 2. char*转const char* 四.QString 和 std::string 互转 补充 CStrin

  • C++如何将字符串颠倒输出

    目录 如何将字符串颠倒输出 本题重点在于string字符串的颠倒函数 如何将字符串颠倒输出 请定义一个类Test,其拥有一个私有数据成员str(string类型),和其他对字符串进行简单操作的行为. 请根据如下main函数的代码完成类Test的定义 int main() { string str;   //输入一个字符串 getline(cin, str); //实例化对象 Test* s = new Test(); //设置对象中的数据成员值 s->SetStr(str); cout <&l

  • PHP的JSON封装、转变及输出操作示例

    本文实例讲述了PHP的JSON封装.转变及输出操作.分享给大家供大家参考,具体如下: Json封装 protected function renderJSON($data=[], $msg ="ok", $code = 200) { //设置格式 header('Content-type: application/json'); //输出json格式的内容 print_r(json_encode([ "code" => $code, "msg&quo

  • Java实现二叉树的建立、计算高度与递归输出操作示例

    本文实例讲述了Java实现二叉树的建立.计算高度与递归输出操作.分享给大家供大家参考,具体如下: 1. 建立 递归输出 计算高度 前中后三种非递归输出 public class Tree_Link { private int save = 0; private int now = 0; Scanner sc = new Scanner(System.in); /* * 构造函数 */ Tree_Link(){ } /* * 链表建立 */ public Tree Link_Build(Tree

  • Python3基本输入与输出操作实例分析

    本文实例讲述了Python3基本输入与输出操作.分享给大家供大家参考,具体如下: 数据的输入和输出操作是计算机最基本的操作,本节只研究基本的输入与输出,基本输入是指从键盘上输入数据的操作,基本输出是指屏幕上显示输出结果的操作. 2.1基本输入和输出 常用的输入与输出设备有很多,如摄像机.扫描仪.话筒.键盘等都是输入设备,然后经过计算机解码后在显示器或打印机等终端上输出显示. 2.2使用print()函数输出 ----基本语法: print(输出内容) #其中输出内容可以是数字和字符串 print

  • Ajax对xml信息的接收和处理操作实例分析

    本文实例讲述了Ajax对xml信息的接收和处理操作.分享给大家供大家参考,具体如下: Ajax负责请求和接收xml信息,DOM负责处理xml信息. DOM: php中,DOM是php 与 xml(html)之间沟通的桥梁 JavaScript中,DOM是JavaScript 与 html(xml)之间沟通的桥梁 xml需要从服务器端返回到客户端被JavaScript处理 Ajax负责请求xml,DOM(JavaScript)负责处理xml信息 Ajax+JavaScript实现对xml的接收处理

  • JavaIO字符操作和对象操作示例详解

    目录 字符操作 编码与解码 String 的编码方式 Reader 与 Writer 实现逐行输出文本文件的内容 对象操作 序列化 Serializable transient 字符操作 编码与解码 编码就是把字符转换为字节,而解码是把字节重新组合成字符. 如果编码和解码过程使用不同的编码方式那么就出现了乱码. GBK 编码中,中文字符占 2 个字节,英文字符占 1 个字节: UTF-8 编码中,中文字符占 3 个字节,英文字符占 1 个字节: UTF-16be 编码中,中文字符和英文字符都占

  • PHP中遍历二维数组_以不同形式的输出操作实例

    如下所示: <body> <?php //定义二维索引数组 $arr = array( array("101","李军","男","1976-02-20","95033"), array("103","陆君","男","1974-06-03","95031"), array("10

  • django传值给模板, 再用JS接收并进行操作的实例

    今天用要django传值给模板, 然后需要用js处理一下.特此记录. 用json.dumps()方法将值传给模板. import json return render(request,'wauth/freetime.html', {'slot_ids': json.dumps(slot_ids)}) 用JSON.parse()接收django传过来的值. var slot_ids = JSON.parse('{{ slot_ids|safe }}'); 以上这篇django传值给模板, 再用JS

  • keras 模型参数,模型保存,中间结果输出操作

    我就废话不多说了,大家还是直接看代码吧~ ''' Created on 2018-4-16 ''' import keras from keras.models import Sequential from keras.layers import Dense from keras.models import Model from keras.callbacks import ModelCheckpoint,Callback import numpy as np import tflearn im

  • C++实现字符串删除字符后逆序输出

    本文实例为大家分享了C++实现字符串删除字符后逆序输出的具体代码,供大家参考,具体内容如下 输入若干个字符串,和一个英文字符ch. 要求删除每个字符串中的字符ch(区分大小写),得到新的字符串,然后将新的字符串按照字典逆序排序后输出 (每个字符串的长度不超过30个字符,字符串总数不超过30) 输入: 3 abcddc sxwcdez ncvccvd c 输出: sxwdez nvvd abdd C++实现:(适用于初学者) #include <iostream> #include <cs

  • keras K.function获取某层的输出操作

    如下所示: from keras import backend as K from keras.models import load_model models = load_model('models.hdf5') image=r'image.png' images=cv2.imread(r'image.png') image_arr = process_image(image, (224, 224, 3)) image_arr = np.expand_dims(image_arr, axis=

随机推荐