在VC中读写ini配置文件

配置文件中经常用到ini文件,在VC中其函数分别为: 
写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName); 
读取.ini文件:DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName); 
读取整形值:UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName); 
其中个参数的意思: 
LPCTSTR lpAppName ------- INI文件中的一个字段名 
LPCTSTR lpKeyName -------- lpAppName 下的一个键名,也就是里面具体的变量名 
LPCTSTR lpString ---------是键值,也就是变量的值, 必须为LPCTSTR或CString类型 
LPCTSTR lpFileName --------完整的INI文件路径名 
LPCTSTR lpDefaut ----------如果没有其前两个参数值,则将此值赋给变量 
LPSTR lpReturnedString --------接收INI文件中的值的CString对象,即接收缓冲区 
DWORD nSize ------接收缓冲区的大小 
例子: 
CString StrName,Strtemp; 
int nAge; 
StrName = "jacky"; 
nAge = 13; 
WritePrivateProfileString("Student","Name",StrName,"c:\\setting.ini"); 
结果:(INI文件中显示如下:) 
[Student] 
Name=jacky 
读取: 
CString SName; 
GetPrivateProfileString("Student","Name","DefaultName",SName.GetBuffer(MAX_LENGTH),MAX_LENGTH,"c:\\setting.ini"); 
结果:SName = "jacky";这里需要注意点就是用完GetBuffer函数后一定要释放(用SName.ReleaseBuffer()函数),不然后面再用到SName的其他子函数就会失灵。 
读整数比较简单,如下 
int Result = GetPrivateProfileInt("Student","nAge",0,"c:\\setting.ini")返回值即为所读取的结果! 
在GetPrivateProfileString最后一个参数是配置文件路径的参数,此路径只能是绝对路径,不能是相对路径,但现在我需要是我的exe文件能和我的配置文件在一起。因此我使用了GetCurrentDirectory函数。 
原代码如下: 
CString server_ip; 
CString des=""; 
::GetCurrentDirectory(MAX_PATHLENGTH,des.GetBuffer(MAX_PATHLENGTH)); 
des.ReleaseBuffer(); 
des+="\\config.ini"; 
GetPrivateProfileString("PhoneDemo","Server_IP","",server_ip.GetBufferSetLength(15),15,des); 
server_ip.ReleaseBuffer(); 
注意:在这里使用CString变量时,在使用完GetBuffer后,紧接着一定要使用ReleaseBuffer()函数,才可以进行其他的诸如字符串+操作 
转自CSDN-cherryt

---------------------------------------------------------------------------------------------------------------- 
VC读取配置文件(.ini): 
CString strIP = _T(""); 
CString strPort = _T(""); 
::GetPrivateProfileString("TCP/IP","IP","", 
   strIP.GetBuffer(MAX_PATH), MAX_PATH,".\\Config.ini"); 
strIP.ReleaseBuffer(); 
m_strIP = strIP; //IP地址 
::GetPrivateProfileString("TCP/IP","Port","", 
   strPort.GetBuffer(MAX_PATH), MAX_PATH,".\\Config.ini"); 
strPort.ReleaseBuffer(); 
m_iPort = atoi(strPort);   //端口号

配置文件名为:Config.ini 
文件结构: 
[TCP/IP] 
IP=127.0.0.1 
Port=8848

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VC 使用内存映射技术可以显著提高对大文件读写速度。下面是一个简单的示例代码: ```c++ #include <iostream> #include <windows.h> using namespace std; int main() { HANDLE hFile; HANDLE hMapping; LPVOID lpMapping; // 打开文件 hFile = CreateFile("largefile.bin", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { cout << "Failed to open file." << endl; return 1; } // 创建文件映射 hMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL); if (hMapping == NULL) { cout << "Failed to create file mapping." << endl; CloseHandle(hFile); return 1; } // 映射文件到内存 lpMapping = MapViewOfFile(hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0); if (lpMapping == NULL) { cout << "Failed to map file to memory." << endl; CloseHandle(hMapping); CloseHandle(hFile); return 1; } // 读写文件 char* pFile = (char*)lpMapping; for (int i = 0; i < 4 * 1024 * 1024 * 1024LL; i++) { pFile[i] = i % 256; } // 解除内存映射 UnmapViewOfFile(lpMapping); // 关闭文件映射和文件句柄 CloseHandle(hMapping); CloseHandle(hFile); cout << "Done." << endl; return 0; } ``` 这个示例程序打开一个名为 largefile.bin 的文件,并将其映射到内存。然后,程序将对文件进行读写操作,最后解除内存映射并关闭文件。在这个示例,我们使用了一个 4GB 的文件进行测试,程序可以在较短的时间内完成读写操作,而不会出现内存不足的错误。 需要注意的是,内存映射虽然可以提高文件读写速度,但也会占用一定的内存空间。因此,在使用内存映射技术时,需要根据实际情况选择合适的文件大小和内存使用量。同时,需要注意内存映射可能会对程序的稳定性产生影响,特别是在进行大量读写操作时。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值