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

C++字符串指针与字符数组的区别【代码】

今天发现这样一个问题#include <iostream> usingnamespace std; int main() { char ch1[10];strcpy_s(ch1,"123456");//编译通过char* p = newchar[10];strcpy_s(p,"123456");//报错:不接受2个参数 }改成如下所示就没有问题:strcpy_s(p,10,"123456");//编译通过为什么会这样呢?先看下字符数组与字符串指针的区别:1.由双引号括起来的字符串常量属于静态存储类型,它被存储在内存的静态存储区内,所以无论字符串常量出现在程序的什...

C++ string类取字符串的左右子串(以特定子串为分界限)【图】

// Example3.cpp : 定义控制台应用程序的入口点。 //以特定单词为分界,求取字符串的左右子串#include "StdAfx.h" #include <string> #include <iostream> using namespace std;int main(void) {string str,str1,str2;int index;str="cjc is a good boy";cout<<"The original string is \""<<str<<"\"."<<endl;index=str.find("good");str2=str.substr(index);str1=str.assign(str.c_str(),index);cout<<"The left string is \""<<...

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

C++ Primer Plus 第6版字符串:是存储在内存的连续字节中的一系列字符。 C++处理字符串的方式有2种:一、来自C语言、常被称为C-风格字符串(C-Style-string)  1)从字符数组--》字符串  存储在连续字节中的一系列字符意味着可以讲字符串存储在char数组中,其中每个字符都位于自己的数组元素中。  C-style字符串具有一种特殊的性质:以空字符结尾,空字符被写为‘\0‘char dog[8]={‘b‘,‘e‘,‘a‘,‘u‘,‘t‘,‘‘,‘i‘,‘...

C/C++ 字符串分割: strtok 与 strsep 函数说明【代码】【图】

函数原型: char *strtok(char *s, const char *delim); char *strsep(char **s, const char *delim); 功能:strtok和strsep两个函数的功能都是用来分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。 返回值:从s开头开始的一个个子串,当没有分割的子串时返回NULL。 相同点:两者都会改变源字符串,想要避免,可以使用strdupa(由all...

Linux C/C++ 字符串逆序【代码】

/*字符串逆序*/ #include <stdio.h> #include <string.h>void nixu(char *str) {char *last = str + strlen(str) - 1;char tmp;for(;str < last; str++,last--){tmp = *str;*str = *last;*last = tmp;} }int main() {char str[] ={"abcdefg 123456789"};nixu(str);printf("逆序:%s",str);return0; } 运行结果:逆序:987654321 gfedcba/*析构函数调用顺序*/ #include <iostream>using namespace std; class World { public: int a...

C++ 关于字符串的特殊读入和分割问题 *非常重要,基本囊括string相关的输入输出和类型转换问题【代码】【图】

后续在做题时的时候遇到了一个从文件里去读取一串逗号分隔的double数字,并排序的问题; 还是挺操蛋的一道题,用直接读入在分割的方法贼麻烦,所以还是要寻求简单的的库函数和Cpp11特性来进行解决; 查阅相关blog,简单聊一下相关的问题; 其实最主要的有两个问题:1.如何读入?能不能一次分割得到string;2.如果将存放小数的string转换成double; 针对于第一个问题,找到了两种方法: 其一:利用getline的重载形式,这是自己第一...

c++中的字符串数组【代码】

1. 使用指针:因为是字面值,不可以修改,一般加个const,数组大小可以不指定;constchar *colour[4] = { "Blue", "Red", "Orange", "Yellow" }; 2. 使用二维数组:适用于当所有字符串长已知时,串可以修改,第二维大小必须给出;char colour[4][10] = { "Blue", "Red", "Orange", "Yellow" }; 3. 使用string类:串的大小不固定,串可以修改; std::string colour[4] = { "Blue", "Red","Orange", "Yellow" }; 4. 使用动态数组:ve...

C++字符串处理函数总结

1.基础函数输入输出:cin,cout,getchar,gets,putchar,puts,printf,scanf格式化:sprintf,sprintf_s,wsprintf,wsprintf_s,swprintf,swprintf_s (请仔细比较这几组函数的区别)格式化值:%% -返回百分号%b –返回二进制数%c –返回与ASCII值相对应的字符%d –带有正负号的十进制数%e –科学计数符号(如:1.2e+2)%u –不带正负号的十进制数.%ul 不带符号的长整型%f – 浮点数据(本地设置)%F –浮点数据(非本地设置...

C++ 字符串处理

#include <iostream> #include <cstdio> #include <string> using namespace std; int main() {string str("1 2 3 4 5 6 7 8");char ch[] = "abcdefgh";string a;string str_1(ch);string str_2(str, 2, 5);string str_3(ch, 5);string str_4(5,‘X‘);string str_5(str.begin(), str.end());cout<<"输出数字序列"<<endl;cout<<str<<endl;cout<<"输出字符序列"<<endl;cout<<ch<<endl;cout<<a<<endl;cout<<str_1<<endl;cout<<str_2<...

C++ 分割字符串的一些方法【代码】

自定义 split 函数 1void split(conststring& s, vector<string>& tokens, conststring& delimiters = "")2{3string::size_type lastPos = s.find_first_not_of(delimiters, 0);4string::size_type pos = s.find_first_of(delimiters, lastPos);5while (string::npos != pos || string::npos != lastPos) {6 tokens.emplace_back(s.substr(lastPos, pos - lastPos));7 lastPos = s.find_first_not_of(delimiters, ...

用C++实现:FJ的字符串打印【代码】

问题描述  FJ在沙盘上写了这样一些字符串:A1 = “A”A2 = “ABA”A3 = “ABACABA”A4 = “ABACABADABACABA”… …你能找出其中的规律并写所有的数列AN吗?输入格式  仅有一个数:N ≤ 26。输出格式  请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。样例输入3样例输出ABACABA 思路:观察题目中的例子,发现每一个字符串都具有对称性,n=1,就以A为对称中心,n=2,就以B为对称中心,n=3,...

全面深入介绍C++字符串:string类

http://blog.csdn.net/liuliming3000/article/details/18093851 从C到C++ string类2 string类的构造函数3 string类的字符操作4 string的特性描述5 string类的输入输出操作6 string的赋值7 string的连接8 string的比较9 string类的查找函数10 string类的替换函数11 string类的插入函数12 string类的删除函数13 string类的迭代器处理:14 最简单的string类实现 1 从C到C++ string类C语言的字符串函数,简单而高效。C++ string类,功...

c++模板库字符串的基本读取处理【代码】

//c++中字符串的处理获取一行函数 #include <iostream> usingnamespace std; int main() {string s;getline(cin,s);cout<<s<<endl; }//c++中对于操作符重载的一些现象 #include <iostream> usingnamespace std; int main() {string s1,s2;int a=5;s1+="hello";//根据c++的重载,会将hello加入到字符串中s1+=" world!" ;//与上面的规则相同s1+=‘b‘;//可以加入单独的字符,不一定为字符串 s1+=98;//如果加数字的话将会对应的看作为...

C++ sstream 中处理字符串【代码】

C++引入ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含<sstream>这个头文件。istringstream的构造函数原形如下:istringstream::istringstream(string str);它的作用是从string对象str中读取字符,stringstream对象可以绑定一行字符串,然后以空格为分隔符把该行分隔开来。下面我们分离以空格为界限,分割一个字符串。 #include<iostream> #include<sstream> #include<string> int main() {st...

字符串流的使用c++

坚持写博客——善于总结和记录学习的每一天今天简单的复习了下c++的标准IO库,c++的IO操作和c的IO操作原理是不一样的,c++是使用的强大的类库实现了IO的操作,而c只是使用了简单的库函数实现了IO操作。这就带来了一些本质的区别,首先c的IO操作是不进行类型检查的,而c++的进行类型检查的,若输入的类型不正确,那么对象的条件状态会置为false。c++的IO操作主要包括三大类:1、iostream类处理面向流的输入和输出;2、fstream类处理...

C++入门笔记(四)数组、指针与字符串【图】

1、对象数组 声明一个一维对象数组的语句形式是: 类名 数组名[常量表达式]; 每个数组元素对象都可以访问它的公有成员,一般形式是: 数组名[下标表达式].成员名 如果在声明数组时给每一个数组元素指定初始值,在数组初始化过程中就会调用与形参类型相匹配的构造函数,例如: Location a[2]={ Location(1,2), Location(3,4)}; 实例:Point.h:#ifndef _POINT_H #define _POINT_Hclass Point{ public:Point()...

字符串匹配——C++使用Regex【代码】

需要#include < regex > 匹配regex_match ("subject", std::regex("(sub)(.*)") //结果返回true主要regex_match需要匹配源字符串的每个字符,这点与regex_search不同 查找返回一个匹配项const regex pattern("(\\w+day)");string weekend = "Saturday and Sunday";// the source text smatch result;bool match = regex_search(weekend, result, pattern);if(match){for(size_t i = 1; i < result.size(); ++i){cout << result...

《剑指offer》20--表示数值的字符串[C++]

题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 解题思路 使用正则表达式进行匹配。 开头为+或-,合理; 数字在0-9之间,合理; 不同时存在两个小数点,合理; 不同时存在两个E或e,合理; e或E前面必须有数字,合理; e或E后面一位有+或-,合理; 其它,不合理。 -.123e+2, -12.e0...

C++标准库里面没有字符分割函数split,自己编写函数实现字符串分割功能【代码】

#include <vector> #include <string> #include <iostream> using namespace std;vector<string> split(const string &s, const string &seperator){vector<string> result;typedef string::size_type string_size;string_size i = 0;while(i != s.size()){//找到字符串中首个不等于分隔符的字母;int flag = 0;while(i != s.size() && flag == 0){flag = 1;for(string_size x = 0; x < seperator.size(); ++x)if(s[i] == seperato...

【LeetCode】C++ :简单题 - 字符串 1370. 上升下降字符串【代码】

1370. 上升下降字符串 难度简单83 给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果字...