string转wstring,wstring转string,utf8转utf16,utf16转utf8 string转wstring,wstring转string,utf8转utf16,utf16转utf8 为了节省存储空间,一般我们的文件或者数据使用UTF-8保存或传输。但是当我们需要对单个字符逐个处理的时候,UTF-8的变长存储又略显不便,此时可能需要转换到UTF-16,这样每个字都是wchar_t固定双字节长度,比较好操作。幸运的是,我们无需借助其他工具,C++标准库中就提供了这样的转换函数。 注意 使用这些转换函数之前必须要调用 setlocale() 设... 2016年05月11日 C++知识 string转wstring,wstring转string,utf8转utf16,utf16转utf8已关闭评论 喜欢 0 阅读 501 次 阅读全文
CRITICAL_SECTION临界 不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。每个线程中访问临界资源的那段代码称为临界区(Critical Section)。 临界资源是一次仅允许一个线程使用的共享资源。每次只准许一个线程进入临界区,进入后不允许其他线程进入。不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。 线程进入临界区的调度原则是: ①如果有若干线程要求进入空闲的临界区,一次... 2015年08月03日 C++知识 CRITICAL_SECTION临界已关闭评论 喜欢 1 阅读 260 次 阅读全文
多线程还是多进程 多线程和多进程的优缺点比较,图片来源互联网,原地址无从考究。如果程序大量且频繁进行调度,c/c++程序员之家建议试用多线程的方式。因为教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”。实际使用中,可以根据大量实例进行测试。 多线程还是多进程 2015年07月29日 C++知识 多线程还是多进程已关闭评论 喜欢 0 阅读 424 次 阅读全文
C++读取Excel文档(CSV) C++直接读取Excel文档比较麻烦,这里用了一直取巧的方式(因为紧紧是处理一些URL)。首先把.xls格式另存为.csv格式,然后就可以直接读取文件了。 Excel文档形式如下: csv C++代码如下: int main(int argc,char *argv[]) { cout<<"code by cplusplus.me..."<<endl; ifstream fin("ExcelScreenShot.csv"); string line; string linkURL; string fromlinkURL; if (fin.is_open()) ... 2015年05月09日 C++知识 C++读取Excel文档(CSV)已关闭评论 喜欢 5 阅读 3,380 次 阅读全文
用setsockopt()来控制recv()与send()的超时 在send(),recv()过程中有时由于网络状况等原因,收发不能预期进行,而设置收发超时控制: 在Linux下需要注意的是时间的控制结构是struct timeval而并不是某一整型数,以下是来自于网上一篇文章中的摘录,它是这样写的: int nNetTimeout=1000;//1秒, //设置发送超时 setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,(char *)&nNetTimeout,sizeof(int)); //设置接收超时 setsockopt(socket,SOL_SOCKET,... 2015年04月06日 C++知识 用setsockopt()来控制recv()与send()的超时已关闭评论 喜欢 1 阅读 857 次 阅读全文
CString与string的区别与转换 一、简介 CString是MFC或者ATL中的实现。这也就是在MFC、ATL中使用字符串尽量使用CString,它比其它更有优势,方便好用。 string是C++标准库中的实现。最大的优点就是移植性非常好,而且标准库中提供了强大的泛型算法。(不要和<string.h>弄混,<string.h>提供了一些strcat,strcpy等函数;而string是完整的类,头文件是<string>) 二、相同点 用他们都可以取代对char*的使用。 都封装... 2014年09月29日 C++知识 CString与string的区别与转换已关闭评论 喜欢 22 阅读 2,737 次 阅读全文
GBK转UTF8编码-UTF8转GBK编码(C++) 版本一:string,GBK转UTF8,UTF8转GBK #include <iostream> #include "tchar.h" #include <string> #include <windows.h> using namespace std; string GBKToUTF8(const std::string & strGBK) { string strOutUTF8 = ""; WCHAR * str1; int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0); str1 = new WCHAR[n]; MultiByteToWideChar(CP_ACP... 2014年09月13日 C++知识 评论 1 条 喜欢 0 阅读 2,495 次 阅读全文
关于指针函数和函数指针的探究 指针函数和函数指针 指针函数:指针的函数,指针是修饰词,就是一个返回指针的函数。 类型:int* f(int a, int b); 函数指针:函数的指针,函数是修饰词,就是一个指向函数的指针。 类型:int (*f)(int a,int b); 程序示例 指针函数示例: [cpp] #include <stdio.h> int* f(int a,int b) { int *p; p = (int *)malloc(sizeof(int)); printf("p address is 0x%x\n",p); *p = a + b; return p;//指针函... 2014年07月12日 C++知识 关于指针函数和函数指针的探究已关闭评论 喜欢 0 阅读 72 次 阅读全文
对于字节对齐的二次探究 字节对齐(#pragma pack)的机制,原先已经在上一篇文章(字节对齐(#pragma pack))中已经说明了,但是如果我们如果不指定对齐方式的话,编译器会有一个默认对齐方式。 这个默认对齐方式是:按照数据类型的最大成员为默认对齐方式。 总结: 一般地,可以通过下面的方法来改变缺省的对界条件: 使用伪指令#pragma pack (n),编译器将按照n 个字节对齐; 使用伪指令#pragma pack (),取消自定义字节对齐方式。 ... 2013年12月21日 C++知识 对于字节对齐的二次探究已关闭评论 喜欢 0 阅读 35 次 阅读全文
关于常量指针和指针常量的探究 关于常量指针和指针常量的探究 ---本篇文章是从互联网上加以修改的,总结的正好! 在C/C++的学习中,有人经常搞不清楚“常量指针”和“指针常量”这两个概念。其实简单一点讲,“常量指针”所指向的地址上的数据是常量(就是指针可以改变指向,但是指针地址上的数据不能改变),而“指针常量”所指向的地址是常量,地址上面的数据是可以变化的(就是指针的指向不可改变,但是指针地址上的数据可以被改变)。如果... 2013年12月19日 C++知识 关于常量指针和指针常量的探究已关闭评论 喜欢 0 阅读 121 次 阅读全文