摘要: 从helloworld说起:#include <stdio.h>int main(){printf("Hello,World\n");return 0;}你能回答如下问题吗? ·程序为什么要经过编译才能运行?·编译器把C语言转化为可执行的机器码的过程做了什么,怎么做的 ·最后编译出来的可执行文件里面是什么?除了机器码之外还有什么?它们是怎么存放,怎么组织的?·#include<stdio.h>是什么意思?把stdio.h包含进来意味着什么?C语言库又是什么?它怎么实现的? ·不同的编译器(VC,GCC 阅读全文
posted @ 2012-04-28 22:09 KingsLanding 阅读(1564) 评论(0) 推荐(0) 编辑
摘要: 这段时间都没有更新博客,主要在看“程序员的自我修养”这本书,去年暑假的时候看过一下,但是看得很快,而且对着纸质书看,也没有什么具体的操作,更没有对不懂的问一下Google或者百度了。在这接近一个月的时间里面我重新看了这本书,首先花了一个多星期看了一遍,然后又花了两个星期来做笔记,把里面的代码都跑了一遍,使用的环境是:Visual Studio 11 Beta 、Ubuntu10.04还有Cygwin(简单的就用这个)。对不懂的基本上都在网上找了相应的东西来扩展学习,总的来说映像还是较深了,收获比较大。看的过程中有些部分还是比较痛苦的,但是也有觉得比较新奇很有兴趣。目标就在那里,不能因为需要.. 阅读全文
posted @ 2012-04-28 21:56 KingsLanding 阅读(1353) 评论(2) 推荐(0) 编辑
摘要: 独立主格结构 A : n. + present participle phrase (名词 + 现在分词短语) 到处都可以看见人们穿着节日服装,满脸笑容 Everywhere you can see people in their holiday dresses, their faces shining with smiles 天气要是合适,我们明天去西山玩 Weather promising, we'll go on an excursion to the Western Hill tomorrow. B: n. + past participle phrase (名词 + 加过程去 阅读全文
posted @ 2012-04-08 23:56 KingsLanding 阅读(1670) 评论(0) 推荐(0) 编辑
摘要: 下面是一个生产者消费者问题,来介绍condition_variable的用法。当线程间的共享数据发生变化的时候,可以通过condition_variable来通知其他的线程。消费者wait 直到生产者通知其状态发生改变,Condition_variable是使用方法如下:·当持有锁之后,线程调用wait·wait解开持有的互斥锁(mutex),阻塞本线程,并将自己加入到唤醒队列中·当收到通知(notification),该线程从阻塞中恢复,并加入互斥锁队列(mutex queue)线程被唤醒之后继续持有锁运行。Condition variable有两种类型:con 阅读全文
posted @ 2012-04-08 23:50 KingsLanding 阅读(12689) 评论(1) 推荐(0) 编辑
摘要: C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用起来都比较复杂,C++11提供了新头文件<thread>、<mutex>、<atomic>、<future>等用于支持多线程。使用C++11开启一个线程是比较简单的,下面来看一个简单的例子:#include <thread>#include <iostream>void hello(){ std::cout << 阅读全文
posted @ 2012-04-08 23:49 KingsLanding 阅读(67707) 评论(8) 推荐(8) 编辑
摘要: C++11从去年开始接触的,首先接触的是boost,在VS2010上玩了一下,但是没有看太多。后面接触到C++11,第一个下载的资料室Scott Myers 的overview of C++0x,之后九月份C++11出了新标准,我下载了ISOICE14882 C++11的pdf,感觉看不懂,也没有太多时间研究这个,于是也就是当资料查查了。从去年末很多网络上的朋友都有在发一些C++11的文章,我也开始学习他们发的博客,然后结合自己的理解和上面提到的资料还有几个网站来学习,我这些程序都是在VC11下编译通过的。总共有几个部分:tuple,正则表达式,lambda表达式,多线程。我都是先写在wo.. 阅读全文
posted @ 2012-04-08 23:37 KingsLanding 阅读(2903) 评论(3) 推荐(1) 编辑
摘要: 下面一个例子将进行年月日格式的转换,将DD-MM-YYYY –> YYYY-MM-DD,其中‘.’或者‘/’都能正确识别。#include <regex>#include <iostream>#include <string>std::string format_date(const std::string& date){ // regular expression const std:: regex pattern("(\\d{1,2})(\\.|-|/)(\\d{1,2})(\\.|-|/)(\\d{4})"); // 阅读全文
posted @ 2012-04-08 23:27 KingsLanding 阅读(7171) 评论(0) 推荐(0) 编辑
摘要: 下面来介绍和regex_match()很像的regex_search()的使用实例,regex_match()要求正则表达式必须与模式串完全匹配,regex_search()只要求存在匹配项就可以。#include <regex>#include <iostream>#include <string>int main(){ const std::tr1::regex pattern("(\\w+day)"); // the source text std::string weekend = "Saturday and Sunda 阅读全文
posted @ 2012-04-08 23:16 KingsLanding 阅读(18577) 评论(3) 推荐(2) 编辑
摘要: 该实例通过一个函数is_email_valid 来检查一个email地址是否是一个正确的格式。如果格式正确则返回true。#include <regex>#include <iostream>#include <string>bool is_email_valid(const std::string& email){ const std::regex pattern("(\\w+)(\\.|_)?(\\w*)@(\\w+)(\\.(\\w+))+"); return std::regex_match(email, pattern) 阅读全文
posted @ 2012-04-08 23:07 KingsLanding 阅读(45877) 评论(4) 推荐(6) 编辑
摘要: C++11开始支持正则表达式,使得处理文本更加简洁方便。C++11 支持六种正则表达式语法:ECMAScript, basic(POSIX Basic Regular Expressions), extended(POSIX Extended Regular Expressions ), awk(POSIX awk) , grep(POSIX grep ), egrep(POSIX grep –E)。其中ECMAScript最为强大。闲话不多说,首先来看正则表达式有哪些基本类型。basic_regex: 这是一个包含一个正则表达式的模板类。通常有两种特化方式:a) typedef basic_ 阅读全文
posted @ 2012-04-08 22:53 KingsLanding 阅读(13224) 评论(0) 推荐(0) 编辑