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)//恢复内存保存的数据
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++ 从命令行输入数据 常用输方法cin的一些理解总结
- 常用的一些技术词汇对照(自己总结)
- C++面试的一些总结
- 总结一些常用功能源码
- linux中常用C/C++一些头文件的作用
- 一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
- 一些C++连接,以及个人的C++学习总结。
- C++中一些不常用的前缀介绍
- c#一些常用的正则表达式总结
- 对操作系统一些常用模块调用的简单总结
- .NET中的一些常用资料总结和收集(不断更新)
- 一些常用SQL语句的总结
- 项目中常用到的一些CSS总结
- jdbc编程中的一些常用的技巧[总结]
- [转]c#一些常用的正则表达式总结
- jdbc编程中的一些常用的技巧[总结]
- 对自定义的C++内存管理的一些总结!
- 常用的一些工具总结
- 个人总结的一些DB2很常用命令,包括命令解释。(不断完善中...)
- C++中一些不常用的前缀介绍