转 C++STL之string】的更多相关文章

STL有字符串处理类——stirng和wstring,但是用的时候会觉得不是很方便,因为它不能像TCHAR一样根据定义的宏在char类型字符串和wchar_t进行转换,总不能因为程序要Unicode就把所有类型转换一遍吧?有没有好办法? 答案当然是肯定的,先看看MS的TCHAR是怎么做的,以下摘自MS Platform 的tchar.h,略有删减 #ifdef _UNICODE#ifdef __cplusplus } /* ... extern "C" */ #endif/* ++++…
/*C 语言中字符数组一般会采用char str[]来存放,但是显得会比较麻烦,C++在stl中加入了string类型,对字符串常用的功能进行了封装,操作起来比较方便*/#include<cstdio>#include<string>using namespace std;int main(){ string str = "hello world"; for (int i = 0; i< str.length(); i++){ printf("%…
题目:http://poj.org/problem?id=3096 题意:给定一个字符串S,从中找出所有有两个字符组成的子串,每当组成子串的字符之间隔着n字符时,如果没有相同的子串出现,则输出 "S is surprising." , 反之,则输出 "S is NOT surprising." . 例如 AABA 把它分成两个字符为一个整体的,1..相邻两个字符 AA,AB,BA 没有相同的;    2.隔一个字符的 AB AA 没有相同;          3.隔…
在学习c++STL中的string,在这里做个笔记,以供自己以后翻阅和初学者参考. 1:string对象的定义和初始化以及读写 string s1;      默认构造函数,s1为空串 string s2(s1);   将s2初始化为s1的一个副本 string s3("valuee");   将s3初始化一个字符串面值副本 string s4(n,'c');   将s4 初始化为字符'c'的n个副本 cin>>s5;  读取有效字符到遇到空格 getline(cin,s6…
本文直接转载,非原创!仅记录供自己学习之用. 出处:http://blog.csdn.net/y990041769/article/details/8763366 在学习c++STL中的string,在这里做个笔记,以供自己以后翻阅和初学者参考. 1:string对象的定义和初始化以及读写 string s1;      默认构造函数,s1为空串 string s2(s1);   将s2初始化为s1的一个副本 string s3("valuee");   将s3初始化一个字符串面值副本…
前言   上个周末在和我的同学爬香山闲聊时,同学说到STL中的string类曾经让他备受折磨,几年前他开发一个系统前对string类还比较清楚,然后随着程序的复杂度的加深,到了后期,他几乎对string类失去了信心和信任,他觉得他对string类一头雾水.老实说,我几年前也有同样的痛苦(就是当我写下<标准C++类string的Copy-On-Write技术>之前的一段时间).那时,我不得不研究那根本不是给人看的SGI出品的string类的源码,代码的可读性几乎为零,而且随着了解越深入,就越觉得…
声明一个C++字符串 string类的构造函数和析构函数如下: string s; //生成一个空字符串s string s(str) //拷贝构造函数 生成str的复制品 string s(str,ss) //将字符串str内以ss开始的部分当作字符串的初值 string s(str,ss,length) //将字符串str内ss开始长度为length的部分作为字符串的初值 string s(cstr) //将C字符串作为s的初值 string s(chars,chars_len) //将C字…
结论是:两者没有任何区别 解释: C++Reference中对于两者的解释: 两者的具体解释都一模一样: 理解: length是因为C语言的习惯而保留下来的,string类最初只有length,引进STL后,为了兼容,又添加了size,便于符合STL的接口规则 人们在使用时,size() 一般用作返回容器大小的方法,length() 一般用作返回一个序列的长度,但两者返回的结果是一样的.…
目录 1.简介 2.string类成员函数汇总 3.String类的构造函数以及析构函数 4.获取字符串长度 5.获取字符串元素 6.字符串比较方法 7.字符串输入输出 8.字符串查找函数 1.简介 要使用 string 类,必须包含头文件 <string>.string 库提供了许多其他功能,如删除字符串的部分或全部,用一个字符的部分或全部替换另一个字符串的部分或全部,插入.删除字符串中数据,比较.提取.复制.交换等. 2.string类成员函数汇总 表 1 string 类的所有成员函数…
string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造函数和复制构造函数,如string s1:string s2="hello":都是正确的写法.当构造的string太长而无法表达时会抛出length_error异常 string类的字符操作: const char &operator[](int n)const; const ch…
string,大小可变的字符串,有些类似于C中的字符数组. 只记载本人在ACM中常用的函数,并且全部经过程序测试. 1.初始化 string s1;——默认构造函数s1为空串 string s2(s1);——将s2初始化为与s1相同 string s3("aaa");——将s3初始化为aaa string s4(3, 'b');——将s4初始化为bbb 2.输入输出 能用cin,cout:不能用scanf,printf. 用cin读入会忽略开头所有空白字符(如空格,换行符,制表符),读…
衔接上一篇引导. 作为第一篇博客,就要大气一点. 可我好像并不知道怎么才能让自己的博客大气一点= =: 明天是我生日,自己先买个中文域名庆祝了一下…… 好了,废话说完了,结果博客也没大气到哪去……,正文,现在开始. 关于String(字符串),想必小班同学都已经很熟悉了,比char数组好用多了嘛,不用管申请多少空间,操作方便.可是据我观察,大家好像并没有对string有一个系统的认识……所以,在开篇,我要介绍介绍String这个神奇的东西. (好像并没有什么可以介绍的) String就是字符串的…
#include <iostream> #include <string> using namespace std; int main() { string s("hello"); string s2("abcdef"); string::iterator p = s.begin(); cout << *p << endl; s.insert(p, 'A'); //插入之后,p指向新插入的数据 cout <<…
string构造函数,很多重载函数: #include <iostream> #include <string> using namespace std; int main() { string s1; cout << s1 << endl; , 'a'); cout << s2 << endl; string s3(s2); //将s2的字符拷贝到s3中,之后两个完全无关 cout << s3 << endl…
String 构造 string s1("Hello"); string s2("Hello", 3); //s2: Hel string s3(s1, 2); //s3: llo string s4(s1, 2, 2); //s4: ll string s5(5, 'a'); //s5: aaaaa string s6({'a', 'b', 'c'}); //s6: abc 大小 s1="Goodbye" s1.size(), s1.lengt…
通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了!下面先罗列出string类的函数有哪一些,然后再罗列出函数的原型,最后到代码的实现标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用.现将具体用法的一部分罗列如下,只起一个抛砖引玉的作用吧,好了,废话少说,直接进入正题吧!要想使用标准C++中string类,必须要包含#include <st…
http://www.cnblogs.com/wangkangluo1/archive/2011/07/22/2114118.html string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造函数和复制构造函数,如string s1:string s2="hello":都是正确的写法.当构造的string太长而无法表达时会抛出length_er…
常用代码整理: #include<iostream> #include<cstdio> #include<cstring> #include<string> using namespace std; bool startWith(const string &str,const char* prex) { int pos = str.find(prex); ; } bool endWith(const string & str,char* pr…
赋值 string 类型变量可以直接赋值 str = "string"; // str 是 一个 string 类型变量 //等价于 str.assign("string"); str = b; // b 可以是 string 类型 也可以是 char * 类型 也可以方便地添加字符串 str += 'c'; str += "string"; str += b;//b 可以是 string 类型 也可以是 char * 类型 读取 可以直接使用[…
#include <iostream> #include <string> using namespace std; // 初始化 void test01() { string s1; // 调用无参构造 创建一个空的字符串 , 'c'); // 使用 n 个字符 c 初始化 string s3("abcdefg"); // 使用字符串初始化 string s4(s3); // 使用一个 string 对象初始化另一个 string 对象(拷贝构造) cout…
Two-gram is an ordered pair (i.e. string of length two) of capital Latin letters. For example, "AZ", "AA", "ZA" — three distinct two-grams. You are given a string ss consisting of nn capital Latin letters. Your task is to fin…
1)代码展示: string是一个类,只不过封装了 char*  而且还封装了  很多的字符串操作函数 2)string类的初始化: string的构造函数 ²  默认构造函数: string();       //构造一个空的字符串string s1. ²  拷贝构造函数: string(const string &str);         //构造一个与str一样的string.如string s1(s2). ²  带参数的构造函数   string(const char *s);   …
string string封装了char*,管理这个字符串,是一个char*型的容器. string的相关操作 头文件 #include<string> string构造函数 string str;//创建一个空的字符串 string str1(str);//使用一个string对象初始化另一个string对象 string str2("hello");//使用字符串s初始化 string str3(3,'a');//使用n个字符c初始化 string基本赋值操作 stri…
原文: http://coolshell.cn/articles/12199.html stl的string是经过严格优化的, 深入理解对以后编程过程中应用string非常有益处, 感谢左耳朵耗子的精彩文章 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检…
题目 转载来的,有些stl和string的函数蛮好的: //numx[i]=string(sx); //把char[]类型转换成string类型 // mat.insert(make_pair(numx[i],0)); //创造一个(string,int)整体——结构体,插入map //sx[j]=ch[sx[j]-'a'];//把字母转换成相应的数字 //mat.find(numx[i])->second;//返回位置—— 取map当中num[i]对应的键值 #include<cstdio&…
10.2.1 STL的string 1String概念 ²  string是STL的字符串类型,通常用来表示字符串.而在使用string之前,字符串通常是用char*表示的.string与char*都可以用来表示字符串,那么二者有什么区别呢. string和char*的比较 c语言没有字符串,使用字符数组模拟字符串. ²  string是一个类, char*是一个指向字符的指针. string封装了char*,管理这个字符串,是一个char*型的容器. ²  string不用考虑内存释放和越界.…
浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容器,但是由于它的使用方法等等和\(STL\)容器很像,所以就把它当作\(STL\)容器一样介绍. 其实\(string\)容器就是个字符串,这通过它的英文译名就能看得出来.但是对于字符串以及字符串的相关操作,可能读者还是对普通的\(C/C++\)的#include<cstring>,#includ…
小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照搬原作者的描述),加上小喵自己的想法,之后配合Redis官网上的各种相关的操作命令(原书上貌似没有很多的介绍命令). 小喵的个人博客地址: http://miaoerduo.com, 随时欢迎各位的大驾. 原文链接: http://www.miaoerduo.com/redis/redis基本操作-strin…
本文为转载别人的,以作收藏之用 百度了一天,现在把结论放上边: 1.不要用STL(std::string属于STL)来跨模块传输数据,例如:dll(so)之间,dll(so)和exe(elf)之间. 解决方法:使用基本类型.数组.结构体,或者使用下面文章中的方法. 2.不要跨模块申请和释放内存. 解决方法:可以实现一个接口来释放,其他方法参考下面. 今天用个测试exe调用了个dll,有个接口返回std::string,经调试发现挂在该函数return之后,怀疑是string不适合作为返回值,百度…
deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插入比vecto稍慢. );返回的是一个迭代器.删除使用erase(位置):或者erase(重哪里a,到哪里b);其中a位置包括,而b位置是不包括的,位置一般都是用的迭代器.list反转和排序:lis.reverse(), lis.sort().可以使用distance(a, b);计算a到b的距离.…