C/C++
文章平均质量分 94
边城狂人
极品懒人懒得留言,用Google/Baidu查查吧!
展开
-
C++ 中使用 goto 增强 break 和 continue
C++ 的 goto 语句在大多数时间是被打入冷宫的,就因为它容易使代码晦涩难读。同时,break 和 continue 又经常在多重循环中黔驴技穷——不能越层控制循环。 相比之下,Java 就兼顾这两种情况,将 goto 彻底禁用,而标签则限制其只能用于循环之前,以此增加 break 和 continue 的功能,使其能越层控制循环 [参阅:《带标签的 break 和 continu原创 2006-09-11 19:59:00 · 3786 阅读 · 0 评论 -
选择性编译Boost组件
虽然很多Boost组件都只有头文件,不需要编译,但是有些Boost组件,如program_options、regex等还是需要编译生成库的。考虑到目前的程序需要用到program_options、regex等组件,还可能用到filesystem组件,所以还是决定先把Boost编译一下。 习惯性的找Boost某个组件或者整个Boost的*.dsp或者*.sln文件,没找到。于是只好老老实原创 2009-05-30 13:05:00 · 3355 阅读 · 2 评论 -
C++中简单实现foreach循环
看别人用Qt写的程序时,偶然发现虽然程序中用到了foreach。foreach本来不是C++的关键字,但Qt是如何实现的呢?查看Qt的文档,里面说是用preprocesser(预处理)实现的。研究了一下,原来是宏定义。 foreach宏的实质就是在宏中定义循环申明部分,而不包括循环体。在使用的时候,紧接着写循环体就行了。下面用std::vector写了一个简单的示例。#inclu原创 2008-04-30 10:00:00 · 4080 阅读 · 1 评论 -
配置Eclipse+MinGW开发C/C++程序
Eclipse 3.3已经发布好一段时间了。我曾用Eclipse之前的版本加上CDT组件开发C/C++程序。但是也许是因为对配置不够熟悉的缘故,配置起来非常痛苦,使用起来也觉得特别别扭,所以最后还是不得不换用了VC 2005 Express。 Eclipse 3.3的下载页面中,针对不同的开发人员提供了不同的下载包。其中“Eclipse IDE for C/C++ Developers”原创 2007-09-13 01:17:00 · 14355 阅读 · 3 评论 -
静态初始化类成员
某些情况下,在写C++类的时候,希望能通过一个静态初始化函数来对类的一些静态成员进行初始化。比如,往静态的std::map成员或者std::vector成员里添加一些固定的内容等。这在Java里通过static块很容易实现。但在C++里该怎么办呢? 如果要初始化一个普通的静态成员,只需要在实现文件(源文件)中定义该成员并赋予初始值即可,比如:classTest1{public原创 2007-04-06 16:34:00 · 2452 阅读 · 0 评论 -
std::string的工具函数 - 用ostringstream实现repeat
repeat就是将某个字符重复若干次生成一个字符串。这在需要多个前导空格、文本行分隔线的时候非常有用。 用循环来实现repeat是多种方案中的一个。如果希望重复的内容是一个字符串的话,那目前看来,恐怕只能使用循环这种方案了。string repeat(string s, int count) { string r; for (int i = 0; i count;原创 2007-04-06 16:26:00 · 2342 阅读 · 0 评论 -
std::string的工具函数 - 用isspace实现trim函数
在CodeProject上有朋友说我不应该将空白字符限制在" /t/n/r" 以内,应该使用isspace来实现trim函数,以处理Unicode的空白字符。此话在理,所以将trim的三个函数改了一下。(参阅上一篇《std::string的工具函数》)string trimLeft(const string& str) { string t = str; for (stri原创 2007-04-02 10:57:00 · 5053 阅读 · 0 评论 -
std::string的工具函数
一般来说,在处理字符串的时候通常会用到如下一些函数/方法:length、substring、find、charAt、toLowerCase、toUpperCase、trim、equalsIgnoreCase、startsWith、endsWith、parseInt、toString、split等。 如果使用STL中的std::string,它已经提供了如下一些比较有用的方法:leng原创 2007-03-27 22:45:00 · 22632 阅读 · 2 评论 -
C++函数内的批量处理
在用C++写一个函数的时候,发现其中需要对很多个类似的变量进行类似的处理,如:if (map.exists(var1.getName()) { process(map.get(var1.getName()));} 程序中有很多个类似var的变量,而且都不在数组中。因此只能一个个的使用上述语句进行处理。为了简体代码,也为了代码的复用性,这里想到了4种办法,各有优劣原创 2007-01-14 17:58:00 · 2333 阅读 · 0 评论 -
避免Qt库引起“过期”lib或obj的问题
前两天辛辛苦苦用VC Express 2005 Sp1编译了三个小时的Qt Opensource (4.5.1)版本,给同事的VC Pro 2005 Sp1使用时,他居然遇到严重错误(编译生成Release配置的时候):fatal error C1047: The object or library file something.obj was created with an ol原创 2009-06-04 15:09:00 · 3723 阅读 · 0 评论