C++字符串操作

2023-11-04

1.输入字符串

字符串就是字符数组加上结束符 '\0’
1.1 getchar() 可以读取键盘输入的单个字符
1.2 fgets(数组名, 字符个数, stdin) 读入到数组中(stdin 系统已经定义好),遇回车结束

char ch[100];
fgets(ch, 100, stdin);

1.3 getline(cin, 字符串名) 读入一个字符串,可以接收空格和回车

string s;
getline(cin ,s);

1.4 cin.get(字符变量名) 获取一个字符,可以获取空格,遇回车结束
cin.get(数组名, 字符个数) 接收字符串,可以获取空格,遇回车结束

char ch[100];
cin.get(ch, 100);

1.5 cin.getline(数组名, 字符个数, 结束字符),结束字符默认是回车

char ch[100];
cin.getline(ch, 100);

1.6. scanf("%s", 字符串地址) ,字符串名就是地址,不需要加 &,碰到回车或空格停止

string s;
scanf("%s", s + 1);// 从字符串中第2个位置开始存

1.7 cin,碰到回车或空格停止

string str;
cin >> str;
char ch[100];
cin >> ch;

2.字符串输出

2.1 puts(字符串地址)

string str = "123";
puts(str + 1);

2.2 printf("%s", 字符串名.c_str())

char s[100];
fgets(s, 100, stdin);
printf("%s", s.c_str());

2.3 cout << 字符串名

char a[] = "123";
cout << a;
string s = "123";
cout << s;

3.字符串长度

3.1 strlen(数组名),用于数组

char s[100];
fgets(s, 100, stdin);
cout << strlen(s);

3.2 size(),用于字符串

string str = "123";
cout << str.size();

4.字符串分割

4.1 substr(起始位置, 结束位置) 截取字符串,从起始位置开始到结束位置 - 1

string str = "123456";
cout << str.substr(0, 3);
### 输出结果是 "123"

4.2 stringstream ssin(字符串名),将字符串转换成输入流

#include <sstream>
string s = "abc 123 456";
stringstream ssin(s);
string str;
while (ssin >> str)
    cout << str << endl;
### 输出结果
### abc
### 123
### 456

ssin >> str 可以以空格为分界取出字符串 s 中的子串 str

5.字符串比较

5.1 strcmp(a, b) 比较 char 数组 a 和 b 的字典序大小,a < b 返回负数,a == b 返回 0,a > b 返回正数

char a[] = "abc";
char b[] = "abdc";
cout << strcmp(a, b);
### 结果是 -1

5.2 string 的比较
支持 >、<、>=、<=、==、!= 等所有比较操作,按字典序比较

6.字符串赋值

strcpy(a, b)char 数组 b 赋值给 a

char a[] = "123";
char b[] = "456";
strcpy(a, b);

7.判断字符串是否为空

empty() 为空返回1,不为空返回0

string s1, s2 = "abc";
cout << s1.empty() << " " << s2.empty();
### 输出1 0

8.字符串拼接

用加号 “+”

string s1 = "abc", s2 = "def";
string s3 = s2 + s1;
cout << s3 << endl;
string s4 = s3 +"ghi";
cout << s4 << endl;
### 结果是
### defabc
### defabcghi

9.数组形式操作

string s1 = "abc";
cout << s1[1];
// 结果是 b

10.单个字符操作

10.1 string.front() 取字符串第一个字符

string s = "abc 123 456";
cout << s.front() << endl; // a

10.2 string.back() 取字符串最后一个字符

string s = "abc 123 456";
cout << s.back() << endl; // 6

10.3 string.pop_back() 删除字符串最后一个字符,将其长度 - 1

string s = "abc 123 456";
s.pop_back();
cout << s; // abc 123 45

10.4 string.find(s1) 在字符串找到 s1 的位置

string s = "abc";
int k = s.find("d");
cout << k << endl; // 返回 -1
k = s.find("b");
cout << k << endl; // 返回 1

10.5 string.push_back(ch) 在字符串之后插入单个字符 ch

string s = "abc";
s.push_back('d');
cout << s;
// 输出 abcd

11.类型转换

对于一个字符串 str ,调用 c_str()string 转换成 const char* 类型

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++字符串操作 的相关文章

  • 为什么相同的代码在同一台计算机上的执行时间可能不同?

    我是 C 编程新手 我编写了代码并希望获得它的运行时 这就是我所做的 每次运行代码时 我都会得到不同的运行时值 这样对吗 或者我的代码有问题吗 int main int argc char argv time t start end sta
  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • Vue3 理解 toRef 和 toRefs 的作用、用法、区别

    toRef toRefs 作用 toRef 和 toRefs 可以用来复制 reactive 里面的属性然后转成 ref 而且它既保留了响应式 也保留了引用 也就是你从 reactive 复制过来的属性进行修改后 除了视图会更新 原有 ra
  • 有关Android Bluetooth--Bluetooth基础

    蓝牙协议 针对Bluetooth Java Community Process JCP 定义了JSR 82Java APIs for Bluetooth Wireless Technology JABWT 规范bluetooth API 下
  • Appium移动端自动化测试--搭建模拟器和真机环境

    模拟器 安装Android Studio及Android SDK 推荐直接安装Android Studio 然后使用Android Studio安装SDK 启动SDK Manager 安装自己所需要的版本 下载安装即可 在这里插入图片描述
  • Openharmony的编译构建--基础篇

    一 编译构建简介 Openharmony的编译构建流程在鸿蒙的开源版本中以V3 1为分界线 流程略有变化 但其中都是ninja与python通过配置文件json 调用不同的交叉工具链来对源码进行编译 然后生成镜像文件 本文首先以Openha
  • ChatGLM2-6b小白部署教程(windows系统,16G内存即可,对显卡无要求,CPU运行)

    一 前言 近期清华KEG和智谱AI公司一起发布了中英双语对话模型ChatGLM2 6B 小尺寸LLM 开源在https github com THUDM ChatGLM2 6B 可单机部署推理和fine tune 虽然默认程序是GPU运行且
  • Leetcode算法题(C语言)4--旋转数组

    题目 旋转数组 给定一个数组 将数组中的元素向右移动 k 个位置 其中 k 是非负数 示例 1 输入 1 2 3 4 5 6 7 和 k 3 输出 5 6 7 1 2 3 4 解释 向右旋转 1 步 7 1 2 3 4 5 6 向右旋转 2
  • switch 语句编译报错Constant expression required

    错误定位 switch 语句编译报错Constant expression required 解决方法 在常量前加 final 就可以了 这样就不报错了 是不是很简单 哈哈哈
  • 在Visual Studio调试本地程序特别慢怎么办

    在安装VisualStudio2012后 每次进入和结束调试程序都特别慢 要等好久 即使是最简单的hello world都要等几十秒 原因 调试器在查找所有模块的程序数据库 pdb 文件 也称为符号文件 解决方法 在菜单上选择 工具 选项
  • flutter 问题记录

    1 listview 上下有空白间隔 MediaQuery removePadding包裹 MediaQuery removePadding context context removeBottom true removeTop true
  • 深度学习之——可分离卷积

    前段时间keras做了一些更新 我在源码里发现了几个小更新 其中我挑了一两个比较重要的更新点 跟大家分享分享 1 SeparableConv2D 深度可分离卷积是Inception网络结构里的经典用法 在卷积网络中 无外乎两个探索点 一个深
  • Python选择与循环结构之生成随机密码:编写程序,在26个字母大小写和10个数字组成的列表中随机生成10个8位包含大写字母,小写字母和数字的密码。

    题目描述 编写程序 在26个字母大小写和10个数字组成的列表中随机生成10个8位包含大写字母 小写字母和数字的密码 代码如下 import random 1 全密码字符串 txt 01233456789abcdefghijklmnopqrs
  • 嵌入式毕业设计 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 5 部分核心代码 6 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉
  • 几例实用shell脚本分享

    日常工作中经常涉及Linux环境下的进程以及Docker容器相关的操作 现有几例常用的shell脚本 以供大家学习交流 1进程的启动 关闭 重启 应用程序中有master worker两种角色的进程 在系统维护中 一般编写脚本快速进行进程的
  • Python 乱码原理及其解决办法

    最近在爬虫过程中爬下来的HTML文件中出现了不认识的字符 也就是 乱码 之前也遇到了系统之间文件显示 乱码 的问题 花了点时间学习Python编码相关的问题 主要参考了以下几位的文章 Unicode编码底层描述 Python二进制数据 Py
  • web3j的基础用法-2多种创建钱包

    创建钱包 分为3方式 创建助记词钱包 并返回助记词到指定文件 public static boolean createWallet String filePath String destFile throws CipherException
  • 面试必懂之数组排序法总结

    1 寄语 大家在理解的过程中 可以先理解排序的原理 然后按照自己的理解用代码的方式去实现 在写代码的过程中 必要时可以自己去据一个简单一点的数组 在脑海中想想排序的过程 也可以一步一步打印 看结果 这篇文章是我在网上找的 有原理图 但是原文
  • 生活之机遇与挑战

    暑假了 看着大家天南海北地去旅游 心里觉得还是一些失落感 暑假了 还在因为比赛的事情留在学校做 不过还是觉得很欣慰 因为觉得自己虽然很累可是很充实 在暑假里 我做的一个比赛就是2014OpenHW开源硬件大赛 没想到第一次参加就闯进全国总决
  • Minio学习

    Minio Minio 是一个开源对象存储服务器 是 Amazon S3 云存储服务的一个替代品 你可以使用 Minio 来存储任何类型的数据 包括文本 图片 视频等各种类型的文件 同时还支持高级查询和管理功能 Minio 是一个非常灵活和
  • matplotlib: 绘制柱状图

    通过matplotlib绘制柱形图 第一个例子 from matplotlib import pyplot as plt y 10 11 12 11 9 8 13 10 创建y轴坐标 x list range 1 9 创建x轴坐标 创建x轴
  • C++字符串操作

    字符串操作 1 输入字符串 2 字符串输出 3 字符串长度 4 字符串分割 5 字符串比较 6 字符串赋值 7 判断字符串是否为空 8 字符串拼接 9 数组形式操作 10 单个字符操作 11 类型转换 1 输入字符串 字符串就是字符数组加上