C++中常用字符串相关的编程题

索引

找出字符串中的数字,字母和符号,并分别存储

找出字符串中所有不重复的字符,并输出

统计字符串中每个字符的个数,并输出

编译环境

以下所用的开发环境是vs2010,创建的都为控制台输出程序。下面只贴出创建项目后修改了的cpp文件,即主要实现,其它文件保持自动生成的不变。

示例1-找出字符串中的数字,字母和符号,并分别存储

项目结构
在这里插入图片描述

具体的实现如下:

// sortTest.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <iostream>
#include <vector>
#include <stdlib.h>using namespace std;/************************************************************************/
/* 找出字符串中的数字,字母和符号,并分别存储       
*  不足:输出的数字是其数字字符的十进制,没有按照字符输出/
/************************************************************************/int getCharType(char c)
{int nType = 0;if(c >= 48 && c <= 57){nType = 1;}else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z'){nType = 2;}else{nType = 3;}return nType;
}void storeToVec(const char c,vector<int> &nVec,vector<char> &cVec,vector<char> &scpaceVec){int type = getCharType(c);switch(type){case 1:nVec.push_back(c);break;case 2:cVec.push_back(c);break;case 3:scpaceVec.push_back(c);break;default:break;}
}template<typename T>
void printVec(const vector<T> vec){cout<<"================================="<<endl;vector<T>::const_iterator it = vec.begin();for (;it != vec.end();++it){cout<<(char)*it<<"\t";}cout<<endl;
}void sortString(const char *parr){int i = 0;vector<int> nVec;//存储0-9数字vector<char> cVev;//存储a-z或A-Z的字符vector<char> spaceVec;//存储回车符等while (parr[i] != '\0'){storeToVec(parr[i],nVec,cVev,spaceVec);++i;}printVec<int>(nVec);printVec<char>(cVev);printVec<char>(spaceVec);
}int _tmain(int argc, _TCHAR* argv[])
{const char array[] = "sdgygy7764s22dfsjhhj#!@kdf*";sortString(array);system("pause");return 0;
}

运行结果如下:

在这里插入图片描述

示例2-找出字符串中所有不重复的字符,并输出

项目结构
在这里插入图片描述
实现代码如下:

// stringUniqueOutTest.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <iostream>
#include <vector>
#include <stdlib.h>using namespace std;/************************************************************************/
/* 找出字符串中所有不重复的字符,并输出      */
/************************************************************************/void compareExist(vector<char> &c,char sc){bool flag = false;for(int i = 0; i < c.size(); ++i){if(sc == c[i]){flag = true;break;}}if(!flag){c.push_back(sc);}
}void printVec(const vector<char> vec){vector<char>::const_iterator it = vec.begin();while(it != vec.end()){cout<<*it<<"\t";++it;}cout<<endl;
}void printSingleChar(const char *parr){int i = 0;vector<char> cVec;if(parr[i] != '\0'){cVec.push_back(parr[i]);++i;} while (parr[i] != '\0'){compareExist(cVec,parr[i]);++i;}printVec(cVec);
}int _tmain(int argc, _TCHAR* argv[])
{const char srray[] = "hudfyegtysdsgftfsd";printSingleChar(srray);system("pause");return 0;
}

运行结果如下:

在这里插入图片描述

示例3-统计字符串中每个字符的个数,并输出

项目结构
在这里插入图片描述
实现代码如下:

// countCharNumberTest.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <iostream>
#include <vector>
#include <stdlib.h>using namespace std;/************************************************************************/
/* 统计字符串中每个字符的个数,并输出                       */
/************************************************************************/bool findCharIsInVec(vector<char> &vec,char c){vector<char>::const_iterator it = vec.begin();for(;it != vec.end(); ++it){if (*it == c){return true;}}return false;
}void charOccurNumber(int &count,char c,const char *parr,int i,int nSize){for (int n = i + 1; n < nSize; ++n){if(c == parr[n]){++count;}}
}void CountChar(const char * parr){vector<char> cVec;int count = 0;int i = 0;int nSize = strlen(parr);//求字符串的长度while (parr[i] != '\0'){if(!cVec.empty()){bool ret = findCharIsInVec(cVec,parr[i]);if (ret){++i;continue;}}++count;charOccurNumber(count,parr[i],parr,i,nSize);cout<<"字符"<<parr[i]<<"出现的次数:"<<count<<endl;cVec.push_back(parr[i]);count = 0;}
}int _tmain(int argc, _TCHAR* argv[])
{const char starr[] = "hudhfuhuheweashjhjdsfsd";CountChar(starr);system("pause");return 0;
}

运行结果如下:

在这里插入图片描述
示例3的第二种实现:

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>using namespace std;/************************************************************************/
/* 统计字符串中每个字符的个数,并输出                       */
/************************************************************************/
void showCharNums(const char* pArr)
{if(pArr==NULL)return;char ascii[256] = {0};int nLen = strlen(pArr);for (int i=0;i<nLen;++i){ascii[pArr[i]]++;//ascii[pArr[i]] = ascii[pArr[i]] + 1}for (int i=0;i<256;++i){if (ascii[i]>0){cout<<(char)i<<" : "<<(int)ascii[i]<<endl;}}
}int _tmain(int argc, _TCHAR* argv[])
{const char starr[] = "hudhfuhuheweashjhjdsfsd";CountChar(starr);cout<<"========================================="<<endl;showCharNums(starr);system("pause");return 0;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刷了一个半月算法题,我薪资终于Double了

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;前言很多人感觉大公司都是要手写算法&#xff0c;那刷题是必不可少了&#xff0c;你技…

创建版本库

什么是版本库呢&#xff1f;版本库又名仓库&#xff0c;英文名repository&#xff0c;你可以简单理解成一个目录&#xff0c;这个目录里面的所有文件都可以被Git管理起来&#xff0c;每个文件的修改、删除&#xff0c;Git都能跟踪&#xff0c;以便任何时刻都可以追踪历史&#…

mac上用qt调用自己生成的qt动态库,该动态库又依赖第三方库

qt下依赖于第三方库生成的动态库的调用概述基于声网的sdk如何在自己的动态库中使用使用基于第三方库的动态库下面看pro文件中的设置概述 初次使用mac上的qtCreator生成动态库&#xff0c;该动态库编写时调用了第三方库&#xff0c;基于生成的该动态库&#xff0c;编写测试程序…

版本回退

现在&#xff0c;你已经学会了修改文件&#xff0c;然后把修改提交到Git版本库&#xff0c;现在&#xff0c;再练习一次&#xff0c;修改readme.txt文件如下&#xff1a; i am gblfy i am yuxin然后&#xff0c;【工作区】-【暂存区】-【本地仓库】尝试提交&#xff1a; 修改…

Docker精华问答 | 数据库为什么不适合放在 Docker 中运行?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux或Windows 机器上&#xff0c;也可以实现虚拟化。今天就让我们一起看看关于Docker …

Mac下使用macdeployqt打包qt程序:

概述 初次在Mac上使用qt的macdeployqt来打包生成的可执行程序&#xff0c;这里记录下。由于我的程序是调用之前生成的qt动态库&#xff0c;而动态库又依赖于第三方库&#xff0c;相对于没有库文件依赖的程序&#xff0c;这里有一些需要注意的点&#xff0c;下面是打包的步骤。…

路透社:谷歌已停止与华为部分合作;联想否认断供华为PC;微软计划直供Linux内核;谷歌无人机快递Wing进军芬兰……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 阿里巴巴联合欧莱雅发布移动…

管理修改

现在&#xff0c;假定你已经完全掌握了暂存区的概念。下面&#xff0c;我们要讨论的就是&#xff0c;为什么Git比其他版本控制系统设计得优秀&#xff0c;因为Git跟踪并管理的是修改&#xff0c;而非文件。 你会问&#xff0c;什么是修改&#xff1f; 比如你新增了一行&#x…

npm install安装依赖报错——常见报错解决方案

小伙伴在开发前端项目过程中&#xff0c;执行npm install安装项目依赖时&#xff0c;往往会遇到各种各样的报错&#xff0c;接下来建仔给大家总结一下几种常见报错解决方案! 第一种报错&#xff1a;无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 报错详…

AWS CEO Andy Jassy 专访:我们一直思考的是未来 2-5 年的事 | 人物志

戳蓝字“CSDN云计算”关注我们哦&#xff01;人物志&#xff1a;观云、盘点、对话英雄。以云计算风云人物为核心&#xff0c;聚焦个人成长、技术创新、产业发展&#xff0c;还原真实与鲜活&#xff01;本文来源&#xff1a;Siliconangle《Exclusive interview: How CEO Andy Ja…

撤销修改

自然&#xff0c;你是不会犯错的。不过现在是凌晨两点&#xff0c;你正在赶一份工作报告&#xff0c;你在readme.txt中添加了一行&#xff1a; Im writing a report.在你准备提交前&#xff0c;一杯咖啡起了作用&#xff0c;你猛然发现了stupid boss可能会让你丢掉这个月的奖金…

QtCreator下使用c++标准输入cin输出cout没有阻塞等待输入

引言 在QtCreator中编写c程序&#xff0c;其中需要从控制台输入&#xff0c;就用了c的cout和cin&#xff0c;本应该等待控制台输入文本&#xff0c;但是却没有。下面是具体的案例。 案例 本文基于QtCreator创建的qt控制台输出程序&#xff0c;创建时选择如下图所示的选项&am…

Docker 系列学习文章 | 什么是容器云?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;宝哥devops运维转自&#xff1a;云加社区腾小云导读&#xff1a;容器…

删除文件

在Git中&#xff0c;删除也是一个修改操作&#xff0c;我们实战一下&#xff0c;先添加一个新文件test.txt到Git并且提交&#xff1a; echo "test del file" >> test.txt git add test.txt git commit -m "add del test.txt"一般情况下&#xff0c;…

mvc设计模式的简单领悟

引言 mvc设计模式&#xff0c;是将数据模型与视图分离&#xff0c;通过控制器来建立起数据模型与视图之间的联系&#xff0c;当数据模型变化自动更新视图。其中M-数据模型&#xff0c;V-视图&#xff0c;C-控制器。下面是一个简单的对于MVC设计模式的使用。 示例 开发环境是…

添加远程库

现在的情景是&#xff0c;你已经在本地创建了一个Git仓库后&#xff0c;又想在GitHub创建一个Git仓库&#xff0c;并且让这两个仓库进行远程同步&#xff0c;这样&#xff0c;GitHub上的仓库既可以作为备份&#xff0c;又可以让其他人通过该仓库来协作&#xff0c;真是一举多得…

微服务精华问答 | 什么是金丝雀释放?

戳蓝字“CSDN云计算”关注我们哦&#xff01;微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。今天&#xff0c;就让我们来看看关于微服务更加有深度的问题吧。1Q&#xff1a;什么是金丝雀释放&#xff1f;A&#xff1a;Canary Rele…

Git 远程配置

Git 配置篇02_远程配置 git 远程配置 2种方案 码云 Github 案例演示 码云 Github更改用户名和邮箱即可 任选1种 第1步&#xff1a;生成SSH key 输入下边命令一直回车&#xff08;4次回车&#xff09; ## 码云配置方案&#xff1a; ssh-keygen -t rsa -C "13396492261163…

虚拟器件—虚拟化技术的新利刃 | 时光机

戳蓝字“CSDN云计算”关注我们哦&#xff01;时光机&#xff1a;搭载这部时光机&#xff0c;带您回顾《程序员》大量优秀文章&#xff0c;重温经典技术干货&#xff0c;我们发现硬核技术永不过时&#xff0c;对于get要点、solve难题、提高自我&#xff0c;仍有非凡意义。作者&a…

git从远程库克隆

首先&#xff0c;登陆GitHub&#xff0c;找到我们的learngit项目 第一种方式(老手建议)&#xff1a;通过命令将远程仓库的代码&#xff0c;拉取到本地&#xff0c;文件夹形式。 第二种方式(入门建议)&#xff1a;将远程的项目代码下载到本地&#xff0c;压缩包形式。 复制…