C++ 基础
HawkJony
擅长:连续普通拳
展开
-
理解EnterCriticalSection 临界区
通俗解释就像上厕所: o(∩_∩)o 门锁了,就等着,等到别人出来了,进去锁上,然后该干什么干什么,干完了,把门打开门没锁,就进去,锁上,然后该干什么干什么,干完了,把门打开-----------------------------------------------------------------------------------------------------------原创 2017-02-21 12:47:37 · 1234 阅读 · 0 评论 -
AfxBeginThread如何安全退出
之前的想法是,如果尽量不要在线程中分配内存,这样当线程没有正常退出时,很容易就出现内存泄漏的情况。所以在这里的test代码也是如此,没有在线程中分配内存,而是在主线程中分配的内存供线程使用。 关于线程正常退出的关键在于:如果在设置了控制线程函数循环的标志位workstatus为false,也需要等待将正在执行的这次循环执行完,才能释放线程中的使用的内存。但是不清楚线程退出了此原创 2017-02-21 12:54:17 · 2996 阅读 · 0 评论 -
std::string用法总结
在平常工作中经常用到了string类,本人记忆了不好用到了的时候经常要去查询。在网上摘抄一下总结一下,为以后的查询方便:string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化string类的字符操作:const char &operator[](int n)con原创 2017-02-21 13:32:06 · 1081 阅读 · 1 评论 -
SetConsoleCtrlHandler 处理控制台消息
如何处理所有的控制台消息呢?解决方法如下: 首先要安装一个事件钩子,也就是说要建立一个回调函数。调用Win32 API,原型如下: BOOL SetConsoleCtrlHandler( PHANDLER_ROUTINE HandlerRoutine, // 回调函数 BOOL Add // 表示添加还是删除 ); 参数HandlerRoutine是一个指向函数的指针原创 2017-02-21 13:52:11 · 1934 阅读 · 0 评论 -
Sleep(0)的妙用
Thread.Sleep(0) 表示挂起0毫秒,你可能觉得没作用,你要写Thread.Sleep(1000) 就有感觉了。似乎毫无意义。MSDN的说明:指定零 (0) 以指示应挂起此线程以使其他等待线程能够执行。Thread.Sleep(0) 并非是真的要线程挂起0毫秒,意义在于这次调用Thread.Sleep(0)的当前线程确实的被冻结了一下,让其他线程有机会优先执行。Threa原创 2017-02-21 14:04:13 · 50589 阅读 · 24 评论 -
ASCII码表详解
ASCII码表ASCII码大致可以分作三部分組成。第一部分是:ASCII非打印控制字符; 第二部分是:ASCII打印字符; 第三部分是:扩展ASCII打印字符。第一部分:ASCII非打印控制字符表ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页/新页功能。此命令指示打印机跳到下一页的开头。(参详ASCII码表中0-原创 2017-02-21 14:07:27 · 4399 阅读 · 0 评论 -
ANSI、UNICODE、UTF-8的演变史
字节:很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。计算机:再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。控制码:开始计算机只在美国用。八位的字节一共可以组合出256(原创 2017-02-21 13:16:16 · 416 阅读 · 0 评论 -
char*,const char*和string 三者转换
1. const char* 和string 转换(1) const char*转换为 string,直接赋值即可。 EX: const char* tmp = "tsinghua". string s = tmp;(2) string转换为const char*,利用c_str() EX: string s = "ts原创 2017-03-30 19:54:14 · 860 阅读 · 0 评论