调试std::string】的更多相关文章

首先需要了解std::string的实现原理    string是STL中最为常用的类型,它是模板类basic_string用char类型特化后的结果,下面我们来看一下string类型的基本组成: typedef basic_string<char> string; struct _Rep_base { size_type _M_length; size_type _M_capacity; _Atomic_word _M_refcount; }; struct _Alloc_hider { _…
今天遇到一个非常难以排查的BUG,谷歌度娘都问过了依旧无解,最后自己重新尝试之后找到解决方案: 先看一下报错信息: 1>.\lenz.cpp(2197)  error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) 1> D:\Program Files\VC\inc…
1.             概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检查你是否在复习时,你才真正捡起课本看书.这就是“拖延战术”,直到你非要做的时候才去做. 当然,这种事情在现实生活中时往往会出事,但其在编程世界中摇身一变,就成为了最有用的技…
std::string cstr; QString qstring; //****从std::string 到QString qstring = QString(QString::fromLocal8Bit(cstr.c_str())); //****从QString 到 std::string cstr = string((const char *)qstring.toLocal8Bit());…
刚刚要找个按空格分离std::string的函数, 结果发现了stackoverflow上的这个问题. 也没仔细看, 直接拿来一试, 靠, 不对啊, 怎么分离后多出个空字符串, 也就是 "abc def" 分离后, 得到的是: "abc" "def" "" 这不科学! 老外在耍我么, 再看原来的回答下面已经有人commet了: while (iss) { string subs; iss >> subs; cout…
VS2008, 写一个简单的demo的时候出现了这个: 1>------ Build started: Project: GetExportTable, Configuration: Release Win32 ------1>Compiling...1>main.cpp1>e:\tzcode\getexporttable\getexporttable\GetExportTable.h(61) : warning C4996: 'scanf': This function or v…
众所周知,大部分情况下,操作一个自动(栈)变量的速度是比操作一个堆上的值的速度快的.然而,栈数组的大小是在编译时确定的(不要说 C99 的VLA,那货的 sizeof 是运行时计算的),但是堆数组的大小在运行时确定,很自由.此外,栈空间比堆空间有限,前者只有几MB,而后者基本上就是你系统内存的大小. 正因为这样,我们想组合两者的优势,既要享受堆空间的自由,又想要在数组较小的时候使用栈空间来加快速度,并且结合两者不会产生额外的开销,这时候,我们需要Short String Optimization…
CString->std::string 例子: CString strMfc=“test“; std::string strStl; strStl=strMfc.GetBuffer(0); std::string->CString  例子: CString strMfc: std::string strStl=“test“; strMfc=strStl.c_str();…
如果项目本身是使用 Unicode 字符集和utf8编码,std::string的length(),size()甚至是c的strLen取到的都是字节长度了,比如三个汉字,就是9, 以上情况不满足的话,就是用c++的宽字符std::wstring: std::string teststr = "dfd123"; std::wstring wStr(teststr.begin(),teststr.end()); wStr.length(); std::wstring的length()取出的…
在这篇博文里,我提到了一个例子,说的是使用C++实现类型安全的printf.这个例子很惊艳,但是在我写程序的时候,并非那么"迫切"地需要它出现在我的工具箱中,因为它并不比普通的printf方便,而且它没有出现的标准库中.所以自己也懒得整.相反,这个函数的兄弟,sprintf,倒是一个非常需要的函数.不仅仅是因为需要它类型安全,而是 sprintf 有比 printf 更多的麻烦: 首先它确实也不是类型安全的 使用sprintf之前,必须要先准备一段buffer,但这个buffer的大小…