首页 > 编程语言 >C++读取单个字符操作

C++读取单个字符操作

时间:2023-11-11 20:38:17浏览次数:31  
标签:字符 读取 get int C++ 0xFF 输入 EOF

get() 是 istream 类的成员函数,它有多种重载形式,不过本文只介绍最简单最常用的一种:

int get();

此函数从输入流中读入一个字符,返回值就是该字符的 ASCII 码。

C++读取单个字符操作_程序员

如果碰到输入的末尾,则返回值为 EOF。EOF 是 End of File 的缩写。istream 类中从输入流(包括文件)中读取数据的成员函数,在把输入数据都读取完后再进行读取,就会返回 EOF。

C++读取单个字符操作_ci_02

EOF 是在 iostream 类中定义的一个整型常量,值为 -1。get() 函数不会跳过空格、制表符、回车等特殊字符,所有的字符都能被读入。例如下面的程序:

#include <iostream>
    using namespace std;
    int main()
    {
        int c;
        while ((c = cin.get()) != EOF)
            cout.put(c);
        return 0;
    }

程序运行情况如下:

http://c.biancheng.net/cplus/↙
http://c.biancheng.net/cplus/
C++ Tutorial↙
C++ Tutorial
^Z↙

表示回车键,^Z表示 Ctrl+Z 组合键。

程序中的变量 c 应为 int 类型,而不能是 char 类型。在输入流中碰到 ASCII 码等于 0xFF 的字符时,cin.get() 返回 0xFF,0xFF 赋值给 c,此时如果 c 是 char 类型的,那么其值就是 -1(因为符号位为 1 代表负数),即等于 EOF,于是程序就错误地认为输入已经结束。而在 c 为 int 类型的情况下,将 0xFF 赋值给 c,c 的值是 255(因为符号位为 0,是正数),而非 -1,即除非读到输入末尾,c 的值都不可能是 -1。

要将文本文件 test.txt 中的全部内容原样显示出来,程序可以如下编写:

#include <iostream>
    using namespace std;
    int main()
    {
        int c;
        freopen("test.txt", "r", stdin);  //将标准输入重定向为 test.txt
        while ((c = cin.get()) != EOF)
            cout.put(c);
        return 0;
    }

标签:字符,读取,get,int,C++,0xFF,输入,EOF
From: https://blog.51cto.com/u_15641375/8319392

相关文章

  • 2023-11-11:用go语言,字符串哈希+二分的例题。 给定长为 n 的源串 s,以及长度为 m 的模式
    2023-11-11:用go语言,字符串哈希+二分的例题。给定长为n的源串s,以及长度为m的模式串p,要求查找源串中有多少子串与模式串匹配,s'与s匹配,当且仅当s'与s长度相同,且最多有k个位置字符不同。其中1<=n,m<=10^6,0<=k<=5。来自左程云。答案2023-11-11:go代码用灵捷3.5......
  • 2023-11-11:用go语言,字符串哈希+二分的例题。 给定长为 n 的源串 s,以及长度为 m 的模式
    2023-11-11:用go语言,字符串哈希+二分的例题。给定长为n的源串s,以及长度为m的模式串p,要求查找源串中有多少子串与模式串匹配,s'与s匹配,当且仅当s'与s长度相同,且最多有k个位置字符不同。其中1<=n,m<=10^6,0<=k<=5。来自左程云。答案2023-11-11:go代码用......
  • golang json 序列化、反序列化 字符串反序列化
    golangjson序列化、反序列化字符串反序列化在使用Golang进行开发时,经常会遇到需要将一段JSON字符串进行序列化和反序列化的情况。JSON是一种轻量级数据交换格式,常用于前后端数据传输、存储等场景。Golang提供了内置的encoding/json包来处理JSON的序列化和反序列化。JSON的序列化......
  • PHP函数封装分分钟帮你实现数据脱敏处理, 支持手机、邮箱、身份证号 中文字符串!
    ......
  • 二元子句归结的c++代码分析
      1//Tryfurtherlearntclauseminimizationbymeansofbinaryclauseresolution.2boolSolver::binResMinimize(vec<Lit>&out_learnt)3{4//Preparation:rememberwhichfalsevariableswehavein'out_learnt'.5......
  • php开发之文件读取、写入
    前言续之前的系列,这里php开发的文件操作的内容读取以及文本写入的部分文件读取代码的实现css代码本系列的php博客都是这个css,名字都是index.css/*css样式初始化*/*{font-family:'Poppins',sans-serif;margin:0;padding:0;box-sizing:border-box......
  • 字符集mysql
    MySQL的字符集从latin1经过utf8到utf8mb4,算是经历曲折的路线。特别是从使用一个字符集变更另一个字符集时,实践当中都非常无奈,不是没办法,而是麻烦。到了MySQL8.0多出了一个字符集utf8mb4_0900_*的字符集,有必要了解一下。1.字符集基础先了解下MySQL字符集都有哪些地方使用,进入数据......
  • matlab 字符串处理函数
    ​ %字符串处理a=' a';b='b b';c='cccc';m=''%获取字符串长度length(a)    %连接两个字符串,每个字符串最右边的空格被裁切d=strcat(a,c) length(d)%连接多行字符串,每行长度可不等,自动把非最长字符串最右边补空格%使与最长字符串相等,会忽略空字符串e=s......
  • L2-037 包装机 (25 分)(C/C++)
    输入样例:344GPLTPATAOMSA3230120220-1输出样例:MATA这道题需要注意的就是当框空的时候,按下0是什么都不会发生的。当对应轨道空的时候,按下对应轨道的数字也是什么都不会发生的当对应轨道不为空,但是框满的时候,需要先把框顶的弹出来,再装进去新的。#include<iostream>#......
  • 开始pyspark------------jupyter notebook 读取CSV文件
    1开始pyspark  1查看版本信息¶ In [1]:importsysprint(sys.version_info)  sys.version_info(major=3,minor=11,micro=5,releaselevel='final',serial=0) In [2]:importosprint("ThevalueofSPARK_H......