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

C++-字符串(string)【代码】

字符串string 可以进行相加操作, s.size(), s.length(),s.c_str() 转换为c语言类型/* 字符串演示 */ #include <iostream> #include <cstring> using namespace std; int main(void) {string s = "hello"; s += " world"; cout << s << endl; string s2; s2 = s;cout << s << endl; //进行比较 string s3 = "hello world"; if (s == s3) {cout << "两个字符串内容相同" << endl; }cout << s.size() << endl;cout << s.length() << e...

C++ 删除一个字符串中的指定字符【代码】

Q:一个数字是以xxx,yyy,zzz的字符串形式存储的,将逗号消去并转化为整数输出 //删除输入字符串中的逗号,并构建新串for(i=j=0;*(s1+i)!=\0;i++)if(s1[i]!=,)s1[j++]=s1[i];s1[j]=\0;//转化为整数a=atoi(s1);

C++ | 基于char*设计一个字符串类MyString【图】

题目来自C++语言程序设计(第四版) 作者郑莉 习题6-24 下面是代码基于char*的实现:/** @Author: Hellcat* @Date: 2020-03-24 11:44:47* This file is MyString.h*/ // class with pointer members必须有copy ctor(拷贝构造)和copy op =(拷贝复制) #ifndef __MyString__ #define __MyString__#include <iostream> #include <stdio.h> #include <string.h> using namespace std;class MyString { public:MyString(const char* cstr = ...

表示数值的字符串(C++描述)【代码】

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 思路:用正则表达式 解题参考:https://blog.csdn.net/Jeff_Winger/article/details/82824144 正则文法知识点参考:https://www.cnblogs.com/wanghao-boke/p/12239945.html https://www.cnblogs.com/cycxtz/p/4804115.html https://www.cnbl...

(C++)char数组和string读取含空格的字符串

1. char数组:使用scanf("%[^c]",s)可以以c字符为间隔读取字符串。所以scanf("%[^\n]",s)可以以读取以换行符为间隔读取字符串。但是它不会吃掉换行符,所以scanf连着用时要用getchar()把中间的换行符吃掉才行。 2. string使用getline(cin,s)可以以换行符为间隔读取字符串。它会吃掉换行符,所以getline连着用不需要用getchar()吃掉换行符。

C++: 字符串、向量和数组要点小结【代码】

文章目录命名空间的using声明string::size_type类型基于范围的for语句标准库类型vector迭代器数组C和C++风格字符串 命名空间的using声明using namespace:name using std: cinstring::size_type类型一个无符号类型整数,而且能够存放的下任何string对象的大小 C++中后续的很多地方都有类似的使用, 例如两个迭代器相减得到的距离啊string s = "test"; auto len = s.size(); //此处的len并不是int类型,而是size_type类型基于范围的f...

字符串与数字的转换(C++)【代码】

一、用streanstream(c++的) 数据多的时候可能有点慢,不过很好用 1、 string—>数字(int、float、double)string str = "123";int num;stringstream ss;ss << str;ss >> num;cout << num << endl;2、数字—>stringint num = 32.123;string str;stringstream ss;ss << num;ss >> str; //cout << ss.str() endl;一样的效果cout << str;二、用sprintf()和sscanf()(c语言的) 1、 char类型的字符串—>数字char str[]="123456";int...

c++程序—字符串【代码】

C风格字符串:char 变量名[ ]="字符串值 " int main() {char str[] = "hello world!";cout << str << endl;system("pause");return 0;}  2. C++风格的字符串:string 变量名 = “字符串值”NB:要加一个头文件: #include<string>#include<iostream> using namespace std; #include<string>int main() {string str = "hello world!";cout << str << endl;system("pause");return 0;}

C/C++输出字符串中数字个数【代码】

C输出 #include<stdio.h> #include<string.h> int main() {char a[100];unsigned int i,count=0;gets(a);for(i=0;i<strlen(a);i++){if(a[i]>=48&&a[i]<=57)//if(a[i]>='0'&&a[i]<='9')count++;}printf("%d",count); }C++输出 #include<iostream> #include<string> using namespace std; int main() {string str;getline(cin,str);int count=0;for(int i=0;i<str.length();i++){if(str.at(i)>=48&&str.at(i)<=57){count++;}}cout<<c...

C++ CString 截取字符串【图】

项目(VC++ 6.0)中有一个需求,字符串A和字符串B,用“|”符号拼接之后,再拆开,要取的是字符串B。 拼接后的字符串:C222|张家港市锦丰青草巷传兴蔬菜经营部 现在要取出后面的中文部分,没有split方法,很不方便。不过经过一番探索,找到了方法:使用CString的Find方法和Mid方法相结合。 1. 找到“|”符号的在字符串中的位置(Find) 2. 从这个位置的后面一位开始截取后面的内容(Mid)CString str ...int idx = str.Find("|"); str ...

C++ STL vector A1047 Student List for Course(25) (注意字符串型的存储方式:用char [N][5]来存储)【代码】【图】

没有想到以二维数组 char [N][5] 存放输入的姓名,自己尝试用vector<char> 失败了。 小技巧:如果排序时直接对字符串排序,那么会导致大量的字符串移动,非常耗时间,因此比较合适的做法是使用字符串的下标来代替字符串本身进行排序,这样消耗的时间会少得多 strcmp 的返回值不一定是 -1 , 0 , +1 ,也有可能是其他正数和负数。因此在写cmp函数时不能写strcmp的返回值等于-1 , 必须写 < 0 #include <bits/stdc++.h> #include<m...

c++带有空格的字符串

1、使用gets#include <iostream> #include <stdio.h> using namespace std; int main(){int N;cin>>N; // fflush(stdin); getchar();//接收回车 for(int i=0;i<N;i++){char temp[100];gets(temp);cout<<temp; } } 2、使用getline#include <iostream> #include <stdio.h> using namespace std; int main(){int N;cin>>N;string s; // fflush(stdin); getchar();//接收回车 for(int i=0;i<N;i++){getline(cin,s);cout<<s<<endl; } ...

c++ 获取GMT 时间和字符串【代码】

需要跨平台,所以可选的只有std 和 boost: boost 比较复杂了 #include <boost/date_time/local_time/local_time.hpp>std::string gmt_time_now() {boost::local_time::time_zone_ptr GMT_zone(new boost::local_time::posix_time_zone("GMT"));auto now = boost::local_time::local_microsec_clock::local_time(GMT_zone);std::stringstream ss;auto* output_facet = new boost::local_time::local_time_facet();auto* input_face...

c++中的类c字符串

一、类c字符串的表示方法1、字符数组,数组的最后一位是 \0,如果没有\0,只是字符数组,不是字符串。2、字符指针 二、类c字符串的初始化1、char array[6] = {a,b,c,d,e,\0};2、char array[6] = "abcde"; 这种字符串被称为字符串常量或者字符串字面值,这种方式隐式的包含了\0。3、const char *array = "bear"; array指针指向字符串的第一个字符 三、类c字符串的其他操作1、拼接字符串常量:任何两个由空白分分隔的字符串常量都将自...

使用C/C++中的itoa将整数转换为二进制字符串【代码】

我可以使用itoa()将long long int转换为二进制字符串吗?我已经看到了使用itoa将int转换为二进制的各种示例.如果我使用long long int,是否存在溢出或可能丢失精度的风险. 编辑 – 感谢大家的回复.我实现了我想做的事情. itoa()不够用,因为它不支持long long int.Moreover我不能在gcc中使用itoa(),因为它不是标准的库函数.解决方法:要将整数转换为仅包含二进制数字的字符串,可以通过使用一位掩码检查整数中的每个位来执行此操作,然后...

C++字符串相互转换

转自cs_wu原文 C++ char*,const char*,string的相互转换 1. string转const char*string s ="abc"; const char* c_s = s.c_str();2. const char*转stringconst char* c_s ="abc"; string s(c_s);3. string转char*string s ="abc"; char* c; const int len = s.length(); c =new char[len+1]; strcpy(c,s.c_str());4. char*转stringchar* c ="abc"; string s(c); 5. const char*转char*const char* cpc ="abc"; char* pc =new char...

C++ Primer笔记(1)——连续读取数据、类型对应的尺寸、类型转换、字符串分行写法【图】

这次要看看C++ Primer,这本基本上就是必读书籍了。下面的内容就是一些之前没有学过的知识的笔记。 读取数量不定的输入数据 虽然很简单,但是还是记一下: #include <iostream>int main(){int sum = 0, value = 0;while(std::cin >> value){sum += value;}std::cout << "sum is: " << sum << std::endl;return 0; } 这里的判断条件是这样的:当使用一个istream队形作为条件时,效果是检测流的状态。如果流有效,即没有遇到错误,那...

C++自定义字符串类

//header.h #ifndef _HEADER_H #define _HEADER_H #define defaultSize 128 #include<iostream> #include<assert.h> #include<string.h> using namespace std; class myString {private:char *ch;int curLength;int maxSize;public:myString(int sz=defaultSize);//三种构造方式myString(const char *init);myString(const myString& ob);~myString(){delete []ch;}void print();//打印字符串int Length()const;myString operator(...

C++比较字符串的大小原理【代码】

C++比较字符串的大小原理原理:两个字符串自左向右逐个字符相比(按ASCII值大小相比较)。例子 #include<iostream> #include<cstring> using namespace std; int main(){string s1 = "123457";string s2 = "127";if(s1 > s2)printf("s1\n");else printf("s2\n");return 0; } // output:s2

C++ string获取字符串元素:[]和at()【图】

字符串中元素的访问是允许的,一般可使用两种方法访问字符串中的单一字符:下标操作符[] 和 成员函数at()。 两者均返回指定的下标位置的字符。第 1 个字符索引(下标)为 0,最后的字符索引(下标)为 length()-1。 使用 []#include<iostream> #include<string> #include<algorithm>using namespace std;int main() {string s1 = "asdfghjkl";for (int i = 0; i < s1.size(); i++){cout << s1[i] << " ";}cout << endl;for (int i ...