您的位置:首页 > 编程语言 > C语言/C++

C++中一些常用总结

2014-06-03 12:27 211 查看
关于文件的读取:文本文件、字节流文件

1 文本文件:

相关的知识:

头文件:fstream和wfstream,分别用来操作单字节和双字节数据

方法:

         ofstreamfile_op(“D:\\test.txt”);

         file_op<< “haha” << endl;

当输出中文的时候,有时出现乱码,这样做:

locale &loc=locale::global(locale(locale(),"",LC_CTYPE));

ofstream file_op(“D:\\test.txt”);

locale::global(loc);

file_op << “哈哈” << endl;

双字节的时候仅仅将ofstream改为wofstream。

2 字节流文件:

主要有这么几个windows API:

CreateFile、GetFileSize、ReadFile、WriteFile、CloseHandle

具体例子:

以读、写方式创建一个文件的内核对象:

HANDLE m_hFile =CreateFile(

szPathName,

GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,

NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,

NULL);

然后得到该文件在内存中展开所需要的内存大小:

DWORD size =GetFileSize(m_hFile,NULL);

创建用来接收该文件字节流的内存区块:

BYTE *p_pbyBase  = (BYTE *)malloc(size);

现在就可以得到该文件内存展开后的数据流了:

Bool bRead = ReadFile(m_hFile,p_pbyBase, size, &dwByteRead, NULL);

别忘记关闭文件句柄

CloseHandle(m_hFile);

写回数据:

         WriteFile(m_hFile,p_pbyBase, size, &dwByteRead, NULL)

 

宽窄字节操作函数:

printf(“%s \n”,str);                               wprintf(“%s \n”,str);

scanf(“%s ”,&str);                                wscanf(“%s”,&str);

cout << “”;                                             wcout <<””;

cin >> str;                                                wcin>> str;

memset                                                  wmemset

memcpy                                                 wmemcpy

strcat                                                      wcscat

 

 

将窄字符转化为宽字符(双字符,此时字符都占用两个字节,不再是一个字节)

char outPath[MAX_PATH_LEN]

int num =MultiByteToWideChar(0,0,outPath,-1,NULL,0);

wchar_t *w_opath = new wchar_t[num];

MultiByteToWideChar(0,0,outPath,-1,w_opath,num);

 

将宽字符转化为窄字符

TCHAR szBuf[BUFSIZ];

memset( szBuf, 0, sizeof(TCHAR) * BUFSIZ );

int num=WideCharToMultiByte(CP_OEMCP,NULL,szBuf,-1,NULL,0,NULL,FALSE);

char *c_name=new char[num+1];

WideCharToMultiByte(CP_OEMCP,NULL,szBuf,-1,c_name,num,NULL,FALSE);

c_name[num]=0;

 

 

 

宏定义:

#pragma
pack(push)//保存内存对齐的数据
#pragma pack(2)

………………

#pragma pack(pop)//恢复内存保存的数据

 

 

 

 

 

 

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c