当前位置: 首页 > news >正文

C++复合数据类型:字符数组|读取键盘输入|简单读写文件

文章目录

  • 字符数组(C风格字符串)
  • 读取键盘输入
    • 使用输入操作符读取单词
    • 读取一行信息getline
    • 使用get读取一个字符
  • 读写文件

字符数组(C风格字符串)

字符串就是一串字符的集合,本质上其实是一个“字符的数组”。
在C中为了区分“字符数组”和“字符串”,C语言规定字符串必须用空字符结束,作为标记。
例如:

char str1[5] = {'h', 'e', 'l', 'l', 'o'}; // 不是字符串,是字符数组
char str2[6] = {'h', 'e', 'l', 'l', 'o', '\0'}; // 字符串

但是这样不方便,因此定义字符串是用双引号

char str3[] = "hello"; // 要不不指定,指定长度5的话会报错,因为最后有一个空字符
cout << sizeof(str3) << endl; //输出是6

建议使用标准库string,少使用C语言的字符数组类型。

读取键盘输入

使用输入操作符读取单词

标准库中提供了iostream,可以使用内置的cin对象,
特点:忽略开始的空白字符,遇到下一个空白字符就会停止(空格,回车,制表符等),如果输入“hello world”,读取到的就只有hello。注意"world"并没有丢,只是保存在输入流的“输入队列中”,可以使用更多string 对象获取。

string str;
// 读取键盘输入,遇到空白字符停止
cin >> str; //输入:hello world
cout << str << endl; //输出:hellostring str1, str2;
cin >> str1 >> str2;  // 输入:hello world
cout << str1 << str2 << endl; //输出:helloworld
//或者可以分开获取
string str3, str4;
cin >> str3; //输入:hello world
cout << str3 << endl; //输出:hello
cin >> str4;
cout << str4 << endl; //输出world

读取一行信息getline

getline函数有两个参数,一个是输入流对象cin, 一个是保存字符串的string对象,他会一直读取输入流中的内容,知道遇到换行符为止,然后把所有的内容保存到string对象中。

string str
getline(cin, str);
cout << str << endl;

使用get读取一个字符

char ch;
ch = cin.get(); //只能获取第一个字符
//或者
cin.get(ch)char str[20];
cin.get(str, 20); //字符数组
cout << str << endl;

读写文件

C++中提供ifstream 和 ofstream类分别用于文件输入和输出,需要引入头文件fstream。

#include<iostream>
#include<string>
#include<fstream>using namespace std;int main()
{ifstream input("./test.txt"); //读入指的是入计算机ofstream output("./output.txt"); //1.按照单词逐个读取// string word;// while(input >> word)// {//     cout << word << endl;// }//读取结束后指针在文件的最后,直接运行下面代码会没有输出,需要将上面的注释掉//2.逐行读取// string line;// while(getline(input, line))// {//     cout << line << endl;// }//3.逐个字符读取char ch;while(input.get(ch)){cout << ch << endl;}//逐个字符写入char ch;while(input.get(ch)){output << ch << endl;}
}
http://www.lryc.cn/news/264009.html

相关文章:

  • Windows11环境下配置深度学习环境(Pytorch)
  • 泛型深入理解
  • Linux内核模块
  • Java 栈和队列的交互实现
  • HarmonyOS应用开发者高级认证满分指南
  • CSharp中Blazor初体验
  • Linux下新建用户,并进行授权
  • STM32为基础的模拟I2C通用8bit和16bit读取以及多字节读取
  • 算法训练营Day19
  • C++数据结构——二叉搜索树详解
  • ros2机器人在gazebo中移动方案
  • 学习Java第74天,Ajax简介
  • 【Java面试题】在Java中String,Stringbuffer,StringBuilder的区别?
  • 让AIGC成为你的智能外脑,助力你的工作和生活
  • ubuntu12.04 源
  • openssl数据压缩
  • SQLturning:定位连续值范围起点和终点
  • 饥荒Mod 开发(十七):手动保存和加载,无限重生
  • Skywalking系列之最新版9.2.0-JavaAgent本地构建
  • olap/clickhouse-编译器优化与向量化
  • RK3399平台开发系列讲解(内核入门篇)网络协议的分层
  • Idea远程debugger调试
  • MATLAB - Gazebo 仿真环境
  • selenium自动化webdriver下载及安装
  • 网络基础介绍
  • Java中四种引用类型(强、软、弱、虚)
  • 【MyBatis学习笔记】MyBatis基础学习
  • 还在为论文焦虑?免费AI写作大师帮你搞定
  • 3.10【窗口】窗口使用示例(窗口缩放 三)
  • 【机器学习】密度聚类:从底层手写实现DBSCAN