实战c++中的string系列
文章平均质量分 51
本专栏主要记录和讲诉实际工作中,关于string的一些操作,一些tips和一些tricks.
一苇渡江694
无有功德,一苇渡江
展开
-
实战c++中的string系列--不要使用memset初始化string(一定别这么干)
参考链接: http://www.cppblog.com/qinqing1984/archive/2009/08/07/92479.html百度百科第一次这么给力: void *memset(void *s, int ch, size_t n); 函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。 memset:作用是在一段内原创 2015-12-14 21:32:20 · 10912 阅读 · 0 评论 -
实战c++中的string系列--将string用于switch语句(c++做C#的事儿, switch中break还是return厉害)
作为一个C++程序员,或是出于习惯,或是出于无奈,你多少次这么写:if (!strcmp(pszValue, "Value X")) DoThis();else if (!strcmp(pszValue, "Value Y")) DoThat();else if (!strcmp(pszValue, "Value Z")) DoSomethingElse();else原创 2015-12-14 20:57:06 · 22014 阅读 · 1 评论 -
实战c++中的string系列--函数返回局部变量string(引用局部string,局部string的.c_str()函数)
当函数返回字符串的时候,我们可以定义返回string和string&。1写一个返回string引用的函数std::string & TestStringReference(){ std::string loal_str = "holy shit"; return loal_str;}这个函数当然是错误的,编译器会提示我们: 返回局部变量或临时变量的地址: loal_str 即原创 2015-12-13 21:48:48 · 27911 阅读 · 3 评论 -
实战c++中的string系列--string的连接(+= or append or push_back)
string的连接也是经常用到的,string重载了一些运算符: 首先看一看重载+运算符,用于串联两个字符串对象: 源码:template<class CharType, class Traits, class Allocator> basic_string<CharType, Traits, Allocator> operator+( const basic_string<C原创 2015-12-13 20:15:15 · 6861 阅读 · 2 评论 -
实战c++中的string系列--string与char*、const char *的转换(data() or c_str())
在工程中,我们也有很多时候用到string与char*之间的转换,这里有个一我们之前提到的函数 c_str(),看看这个原型:const char *c_str();c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这就看到了吧,返回值是const char*,这里需要注意一下。1 string转const char* 当然是用到上面所述的方法c_str():st原创 2015-12-13 11:43:02 · 10458 阅读 · 1 评论 -
实战c++中的string系列--CDuiString和string的转换(duilib中的cduistring)
使用所duilib的人定会知道cduistring类型,先看看这个类是怎么定义的:class UILIB_API CDuiString { public: enum { MAX_LOCAL_STRING_LEN = 127/*63*/ }; CDuiString(); CDuiString(const TCHAR ch);原创 2015-12-12 15:46:21 · 10097 阅读 · 0 评论 -
实战c++中的string系列--std:vector<char> 和std:string相互转换(vector to stringstream)
有时候也会遇到std:vector与转std:string 相互转换的情况。首先看一下vector<char>如何转string:std::vector<char> *data = response->getResponseData();std::string res;//方法一for (int i = 0;i<data->size();++i) { res+=(*data)[i];}原创 2015-12-12 13:30:05 · 52269 阅读 · 3 评论 -
实战c++中的string系列--string到LPCWSTR的转换
今天再来介绍一下如何从string到LPCWSTR的转换。LPCWSTR是什么类型呢? 看看如何定义的:typedef const wchar_t* LPCWSTR;顾名思义就是: LPCWSTR是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型,而不是char型。比如说MessageBoxW的第二、第三个参数就是LPCWSTR类型。`MessageBoxW(__in原创 2015-12-12 12:40:20 · 38755 阅读 · 3 评论 -
实战c++中的string系列--std::string与MFC中CString的转换
搞过MFC的人都知道cstring,给我们提供了很多便利的方法。CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。但是很多情况下,我们还是需要cstring和string的转换。 分两步: 1把cstring转为char数组原创 2015-12-12 12:36:30 · 10105 阅读 · 3 评论 -
实战c++中的string系列--string的遍历(使用下标还是iterator)
迭代器提供了访问容器中对象的方法。例如,可以使用一对迭代器指定list或vector中的一定范围的对象。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器也可以是那些定义了operator*()以及其他类似于指针的操作符地方法的类对象.我们都知道可以用下标运算来访问string对象和vector对象。而另外还有一种更通用的方法也可以实现这样的方法。名曰:迭代器(iterator)原创 2015-12-12 00:19:38 · 14445 阅读 · 0 评论 -
实战c++中的string系列--string的初始化、删除、转大小写(construct erase upper-lower)
string是有迭代器设计模式的,我还没有体会到迭代器带给我的好处,很多时候使用类似数组索引的方法就可以完成任务。场景1:删除string所有的大写字母 这里用到erase方法:#include<iostream> #include<cctype> #include<string> using namespace std; int main() { string str原创 2015-12-11 21:28:26 · 5959 阅读 · 0 评论 -
实战c++中的string系列--string的分割、替换(类似string.split或是explode())
对一个字符串根据某个字符进行分割也是在实战中经常遇到的问题,也是面试中经常会被人提及的。如果你是个C Sharp程序员,你会知晓string.split函数,有下面这些重载: 1) public string[] Split(params char[] separator) 2) public string[] Split(char[] separator, int count) 3) pub原创 2015-12-10 23:58:31 · 6883 阅读 · 0 评论 -
实战c++中的string系列--string的替换、查找(一些与路径相关的操作)
今天继续写一些string操作。 string给我们提供了很多的方法,但是每在使用的时候,就要费些周折。场景1: 得到一个std::string full_path = “D:\program files\csdn”,但是我想得到”D:\program files\vagaa”这个路径。 这就需要字符串的替换std::string full_path = "D:\\program files\原创 2015-12-10 21:48:31 · 31035 阅读 · 0 评论 -
实战c++中的string系列--指定浮点数有效数字并转为string
上一篇博客讲了好几种方法进行number到string的转换,这里再单独说一下float或是double到string的转换。还是处于控件显示的原因,比如说要显示文件的大小,我们从服务器可以获得这个文件的总bytes。这样就需要我们根据实际情况是显示bytes、kb、mb等单位。常用的做法就是把num_bytes/1024,这个时候往往会得到浮点型,浮点型转string也没问题,但是如果你需要保留这原创 2015-12-09 21:51:11 · 7243 阅读 · 1 评论 -
实战c++中的string系列--string与整型或浮点型互转
教科书中很少会提到string与int或是float的相互转换,但是在实际工程中会经常遇到,尤其在做UI控件显示的时候。比如说你要在edit控件中显示一个数值,那你就需要把这个数值首先转为string,然后再将这个string付给edit控件。网上你会找到很多的转换方法,个人觉得效率差不多的情况下,简洁最好。这里主要用到的是stringstreams:stringstream 是 C++ 提供的另一原创 2015-12-09 21:32:22 · 8825 阅读 · 0 评论