string转wstring,wstring转string,utf8转utf16,utf16转utf8

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() 设...

CRITICAL_SECTION临界

CRITICAL_SECTION临界
不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。每个线程中访问临界资源的那段代码称为临界区(Critical Section)。 临界资源是一次仅允许一个线程使用的共享资源。每次只准许一个线程进入临界区,进入后不允许其他线程进入。不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。 线程进入临界区的调度原则是: ①如果有若干线程要求进入空闲的临界区,一次...

多线程还是多进程

多线程还是多进程
多线程和多进程的优缺点比较,图片来源互联网,原地址无从考究。如果程序大量且频繁进行调度,c/c++程序员之家建议试用多线程的方式。因为教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”。实际使用中,可以根据大量实例进行测试。 多线程还是多进程

C++读取Excel文档(CSV)

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()) ...

用setsockopt()来控制recv()与send()的超时

用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,...

CString与string的区别与转换

CString与string的区别与转换
一、简介 CString是MFC或者ATL中的实现。这也就是在MFC、ATL中使用字符串尽量使用CString,它比其它更有优势,方便好用。 string是C++标准库中的实现。最大的优点就是移植性非常好,而且标准库中提供了强大的泛型算法。(不要和<string.h>弄混,<string.h>提供了一些strcat,strcpy等函数;而string是完整的类,头文件是<string>) 二、相同点 用他们都可以取代对char*的使用。 都封装...

GBK转UTF8编码-UTF8转GBK编码(C++)

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...

关于指针函数和函数指针的探究

关于指针函数和函数指针的探究
指针函数和函数指针 指针函数:指针的函数,指针是修饰词,就是一个返回指针的函数。 类型: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;//指针函...

对于字节对齐的二次探究

对于字节对齐的二次探究
字节对齐(#pragma pack)的机制,原先已经在上一篇文章(字节对齐(#pragma pack))中已经说明了,但是如果我们如果不指定对齐方式的话,编译器会有一个默认对齐方式。 这个默认对齐方式是:按照数据类型的最大成员为默认对齐方式。 总结: 一般地,可以通过下面的方法来改变缺省的对界条件: 使用伪指令#pragma pack (n),编译器将按照n 个字节对齐; 使用伪指令#pragma pack (),取消自定义字节对齐方式。 ...

关于常量指针和指针常量的探究

关于常量指针和指针常量的探究
关于常量指针和指针常量的探究 ---本篇文章是从互联网上加以修改的,总结的正好! 在C/C++的学习中,有人经常搞不清楚“常量指针”和“指针常量”这两个概念。其实简单一点讲,“常量指针”所指向的地址上的数据是常量(就是指针可以改变指向,但是指针地址上的数据不能改变),而“指针常量”所指向的地址是常量,地址上面的数据是可以变化的(就是指针的指向不可改变,但是指针地址上的数据可以被改变)。如果...