C++ 字符串 技术教程文章

剑指 Offer 48. 最长不含重复字符的子字符串(C++) 数组(桶)Or 无辅助数组【代码】

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是...

C++字符串相乘(不使用任何标准库的大数类型(比如 BigInteger)也不直接将输入转换为整数)【代码】【图】

如图:根据题目要求直接装string转换为int计算不显示,因为num1和num2的位数最大为110位,int或者long long int都实现不了,那么我们可以考虑模拟乘法运算。 这里可以从右往左遍历乘数,将乘数的每一位与被乘数相乘得到对应的结果,再将每次得到的结果累加,但整个过程中涉及到较多字符串相加的操作,时间复杂度会像滚雪球一样越往后越高。 如果使用数组代替字符串存储结果,则可以减少对字符串的操作。所以在这里我们考虑用一个数...

string替换所有指定字符串(C++)【转载】【代码】

转载自https://blog.csdn.net/a_222850215/article/details/79985504 C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。首先明白一个概念,即string替换所有字符串,将"12212"这个字符串的所有"12"都替换成"21",结果是什么?可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了实现...

c/c++-使用mysqlcapi中,预处理查询条件当过滤字段是字符串时

mysqlc/c++ #include #include #include int main(void){ // declares MYSQL * connection = NULL; MYSQL_STMT * stmt = NULL; MYSQL_BIND bind[3]; MYSQL_BIND inbind; // preprocess bzero(bind, sizeof(bind)); bzero(&inbind, sizeof(inbind)); // declare MYSQL * ptr connection = mysql_init(NULL); if (NULL == connection) { fprintf(stderr, "mysql_...

九宫重排 蓝桥杯c++ 题解 字符串hash+bfs【代码】

九宫重排 蓝桥杯c++ 题解 字符串hash+bfs 题意:给出一个九宫格,你可以将与空格相邻的数字和空格进行交换,目的是得到另一个九宫格,问最少的步数。 思路:从最小步数不难看出我们可以使用广度优先搜索去计算最小步数,但是如何记录九宫格的状态是一个难题。我使用的方法是将九宫格看成一个长度为9的字符串,然后通过字符串hash去记录它的状态。 以下是我的字符串hash代码: #define ll long long ll hashh(string str){ll k=0,t;...

C++字符串string类常用操作详解(一)【初始化、遍历、连接】【代码】

代码示例: #include <iostream> #include "string"using namespace std;//字符串初始化 void strInit() {cout << "字符串初始化:" <<endl;string s1 = "abcdefg"; //初始化方式1string s2("abcdefg"); //初始化方式2string s3 = s2; //通过拷贝构造函数 初始化s3string s4(7,'s'); //初始化7个s的字符串cout << "s1 = "<< s1 << endl;cout << "s2 = "<< s2 << endl;cout << "s3 = "<< s3 << endl;cout << "s4 = "<< s4 << end...

C/C++字符串【代码】

C风格字符串 char ss1[] = "hello"; char ss2[6] = "hello"; //ss1[5]不可以 char ss3[] = {'h', 'e', 'l', 'l', 'o'}; char ss4[5] = {'h', 'e', 'l', 'l', 'o'}; char ss5[6] = {'h', 'e', 'l', 'l', 'o', '\0'}; //sizeof(ss)结果:6 6 5 5 6 //编译器会在ss1与ss2后自动添加null字符'\0'C++提供的以 null 结尾的字符串处理函数 // 头文件<cstring> //复制 strcpy(ss1, ss2); //拼接 strcat(ss1, ss2); //计算字符串长度 st...

C++中字符串String及字符操作方法

字符串的输入方法 1、单个单词能够直接用std::cin,由于:std::cin读取并忽略开头全部的空白字符(如空格,换行符,制表符)。读取字符直至再次遇到空白字符,读取终止。 所以cin仅仅能读取单个单词。显然能够多次使用cin来获取多个单词; 2、多个单词使用函数std::getline(std::cin, s)请看以下代码: #include <iostream> #include <string> int main() {std::string line; // empty stringwhile(std::getline(std::cin, line...

c++/string/substr()字符串截取

substr函数的功能是用于字符串的切剪. substr是string对象里的操作函数之一. substr即是substring(截取字串)-sub即是-subtraction减法的含义. substr的第一个参数是截取开始的位置, 第二个参数是截取的长度. 截取自身的所有字符串即的代码: string content = "hello, world"; content.substr(0, content.length()); 即是截取自身所有. 位置0表示从自身第一个位置开始截取, content.length()表示截取的数量即是自身的数量. 更多示例...

tigergraph 创建 字符串分割函数(c++)【代码】

tigergraph 3.1 图数据库 的有些内置函数不够完善,像字符串的分割等函数都没有,因此在翻阅了国外资料之后,将这个功能贴出来。由于tigergraph使用的是c++ 因此,在创建函数之前,要安装本地的c++,且c++版本必须是11。 如果按照官方提供的安装手册安装的话,自定义内置函数应给添加在 /home/tigergraph/tigergraph/app/3.1.0/dev/gdk/gsql/src/QueryUdf/ExprFunctions.hpp 中,具体的代码如下: //字符串分割inline ListAccum<s...

C++删除字符串方式(好用!很重要)【代码】

C++实现删除给定字符串的给定字符串思路主要有这么几种实现方式: 1.KMP算法 2.用STL的string的 find,然后用erase 3.用C的strstr找到字串位置,然后用strncpy写到新串中 4.用boost库,用正则表达式 STL用法 #include <iostream> #include<string> using namespace std; void deletesub(string &str,const string &sub,int n); //删除字符串中长度为n的sub字串 int main() {string str,sub;cin>>str;cin>>sub;int n=sub.size();//字串...

CSP认证201403-3 命令行选项2[C++题解]:模拟题、字符串处理、stringstream处理getline【代码】【图】

文章目录 题目解答题目链接题目解答来源:acwing 分析: 输出要求:对于无参数的选项,输出即可,当然每个只需要输出一次;对于有参数的选项,需要输出最后出现时所带的参数。 当遇到某个字符串既不是合法的选项,又不是某个合法选项的参数时,分析就停止。 比如下面例子, -a是无参数的选项,所以 第二次出现时后面带有参数就是不合法的,我们直接忽略,结果就是 -a -l,后面的-b被忽略。 ls -a -l -a documents -b这里使用getline...

C++基础知识:字符串转换(to_string,stoi,stol,stoul)【代码】【图】

一、结论 使用C++11,并且导入头文件 #include<string>other ---> stringto_string (int / long / float /...) string --->otherstoistring 转 intstolstring 转longstollstring 转 long longstoulstring 转 unsigned longstoullstring 转 unsigned long longstofstring 转 floatstodstring 转 double 注:在日常使用中, 最常用的是stoll和stod这两个函数, stoll可以兼容stoi,stol; 而stod可以兼容stof。 ...

C++ 带空格字符串的输入与分割【代码】

C++ 带空格字符串的输入与分割 今天刷到一个字符串的题,卡了我好几个小时,做到后来都开始怀疑自己了,明明是道不怎么难的题怎么被我搞那么久,心痛啊! 废话不多说,下面就把本次惨痛教训中学到的知识点列出来 带空格的字符串输入 在C++中,常用的输入方式cin默认的分隔符非常多,其中就包括空格,所以不能直接用cin输入带空格的字符串,不然会被系统自动分成好几个字符串。正确输入带空格的字符串的方法如下: 使用getline函数 ...

C++字符串数组中小写转大写的写法(指针)【代码】

大写字母好看 任务描述 本关任务:将一个字符串中的所有小写字母变成对应的大写字母,其它字母不变。 例如:对字符串“abc12! ef”执行函数后输出结果为“ABC12! EF” 测试说明: 测试输入:1q2w3ASD45sx~1 预期输出:1Q2W3ASD45SX~1 测试输入:as 12xfASA90[]kl{} 预期输出:AS 12XFASA90[]KL{} #include <iostream> using namespace std;void toUp(char* str);int main() {char s[1024];cin.getline(s, 1024); // 输入一行字符...

7.字符串、异常处理、文件和流(C++学习笔记)【图】

C++字符串 C++错误处理 在C++中,异常是在运行时抛出的事件或对象。 所有异常都派生自std::exception类。 它是一个可以处理的运行时错误。 如果我们不处理异常,它就会打印异常消息并终止程序。 C++异常处理关键字 在C++中,我们使用3个关键字来执行异常处理:try catch throw C++用户定义异常 C++中不存在的新异常,可以通过重写和继承异常类功能来定义。 ? ?C++文件和流 在C++编程中,我...

C++ 判断字符串是否是整数或浮点数【代码】【图】

C++ 判断字符串是否是整数或浮点数 在实际写代码过程中,我们经常需要知道一串字符串是否为整数或是浮点数,当然,若是用C++自带的stream等,当然可以非常方便的判断,但效率并不高。因此,我们需要编写出对应的函数,用于高效地直接判断一串字符串是否为整数或者是浮点数(符合C++格式的)。 1. 整数 整数的格式是 “符号(可以没有)+整数” 因而,我们除了对开头进行特殊化判断,其他地方只需要考察是否是数字即可 于是我们可以...

C++截取字符串【代码】

头文件string里面的携带了大量字符串操作函数, 而截取字符串的函数一般用substr()函数实现。 今天遇到了需要截取字符串的题,特地拿出来记录一下。 substr(int pos,int n)包含两个参数 第一个参数代表着从哪里开始截取,是可缺省参数,默认为0,意味着从字符串开头进行截取; 第二个参数代表着截取多少个字符,比如设置为5则会截取5个字符; 即它的功能则是从字符串位置pos开始截取n个字符并返回该字符串,原字符串不变。 参考代码...

C++ 数字与字符串的相互转换的几种方法【代码】【图】

平时在刷题的时候总是会遇到数字与字符串怎么转换的问题,我们要是用一般的方法。 字符串变成数字的常规套路 秦九昭算法 res=res*进制+每一位的数字(从高位向低位) string a; int res=0; for(int i=0;i<a.length();i++) res=res*10+a[i]-'0';数字变字符串。 这是把数字19234变字符串的方法 #include<iostream> #include<algorithm>using namespace std;int main(void) {int s=19234;string a;while(s){a+=s%10+'0';s/=10;}revers...

C++带逗号分隔符的字符串转数字【代码】

/* 将带有逗号分隔符的字符串数字转换为对应数字 对于诸如"1a2b3c",返回0 ok标识是否转换成功 */ long str2num(const char* str,bool& ok) {long result=0;int t=1;ok=true;const char* pstr=str;if(*pstr==-){t=-t;pstr++;}while(*pstr!=\0){if(isdigit(*pstr)){result*=10;result+=*pstr-0;}else{if(*pstr!=,){ok=false;return 0;}}pstr++;}return t*result; }