7.linux下取得系统时间
struct tm * time1;
time_t t;
time(&t);
time1 = localtime(&t);
printf("%d-%d-%d %d:%d:%d/n" , 1900+time1->tm_year,time1->tm_mon+1, time1->tm_mday, time1->tm_hour, time1->tm_min, time1->tm_sec);
6.vector删除重复元素的方法
通过结合使用sort( )和unique( )函数可以实现删除vector重复元素,但这样会改变vector原来的元素顺序.如果vector的元素序列跟程序逻辑有关, 那只能另外选择方法. 如下例:
void FilterVector(SV *v)
{
if (v == NULL)
return;
string str;
vector<string>::iterator i, it;
i = v->begin();
while (i != v->end())
{
it = i + 1;
while (it != v->end())
{
if (*it == *i)
it = v->erase(it);
else
it++;
}
i++;
}
}
5.标准库map.erase()的用法
if (!g_SendData.empty())
{
std::map<string, time_t>::iterator itr;
for (itr=g_SendData.begin(); itr!=g_SendData.end(); )
{
if (difftime(tNow, itr->second) > config.t_ServerConfig.nTimeOut)
{
g_SendData.erase(itr++);
}
else
itr++;
}
}
4.根据窗口句柄得到可执行文件路径
#include <psapi.h>
#pragam comment(lib, "psapi.lib")
DWORD ProcessID = 0;
HANDLE hProcess = 0;
char szPath[512] = {0};
hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, ProcessID);
GetModuleFileNameEx(hProcess, NULL, szPath, 512);
3. CFileDialog出错的解决方法
日期:
2007-7-17
问题描述:
程序在实例化一个CFileDialog后,点击确定或取消按钮, 或进入代码,退出调用该函数的函数时,出现内存错误,错误号
Unhandled exception in xxx.exe(KERNEL32.DLL): 0xC0000005: Access Violation.
解决办法:
更改包含afxwin.h头文件的代码为:
#define _WIN32_WINNT 0x0500 // allow Win2000 specific calls
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include // MFC core and standard components
#undef _WIN32_WINNT
然后,我在这里找到了关于这个问题的具体说明:
这是MFC6.0中的CFileDialog内嵌一个OPENFILENAME结构的原因。如果你定义了_WIN32_WINNT=0x500,那么OPENFILENAME会比之前的版本多一些成员,造成你的工程中的CFileDialog声明就和MFC6.0的DLL中的实现代码不匹配,在运行时会改写MFC的CFileDialog中m_ofn成员之后的变量。
这个问题在MFC7.0中已经修正了,使用的OPENFILENAME从成员变量变成指针(m_pOFN )。你可以参照http://msdn.microsoft.com/msdnmag/issues/0800/c/default.aspx的方法修改你的代码。
2.程序无法调试
日期:
2007-7-17
问题描述:
程序无法加入断点
解决办法:
此问题是由于为了调试方便,把Debug和Release版的可执行文件编译到同一个目录的相同文件
名下,若编译了一个Release版本.exe,下次再进行调试时,应首先清除一次,重新编译All,否则会导致
上述问题;
1.程序无法调试
日期:
2007-7-15
问题描述:
程序无法加入断点
解决办法:
此问题时加入自定义消息后引起的。自定义消息有固定格式,OnSomeFunction(UINT
lParam,LONG wParam), 若将函数原形生命诚OnSomeFunction()则会出现该问题;
time_t t;
time(&t);
time1 = localtime(&t);
printf("%d-%d-%d %d:%d:%d/n" , 1900+time1->tm_year,time1->tm_mon+1, time1->tm_mday, time1->tm_hour, time1->tm_min, time1->tm_sec);
通过结合使用sort( )和unique( )函数可以实现删除vector重复元素,但这样会改变vector原来的元素顺序.如果vector的元素序列跟程序逻辑有关, 那只能另外选择方法. 如下例:
{
if (v == NULL)
return;
string str;
vector<string>::iterator i, it;
while (i != v->end())
{
it = i + 1;
while (it != v->end())
{
if (*it == *i)
it = v->erase(it);
else
it++;
}
i++;
}
}
if (!g_SendData.empty())
{
std::map<string, time_t>::iterator itr;
for (itr=g_SendData.begin(); itr!=g_SendData.end(); )
{
if (difftime(tNow, itr->second) > config.t_ServerConfig.nTimeOut)
{
g_SendData.erase(itr++);
}
else
itr++;
}
}
#include <psapi.h>
#pragam comment(lib, "psapi.lib")
DWORD ProcessID = 0;
HANDLE hProcess = 0;
char szPath[512] = {0};
hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, ProcessID);
GetModuleFileNameEx(hProcess, NULL, szPath, 512);
Unhandled exception in xxx.exe(KERNEL32.DLL): 0xC0000005: Access Violation.
#define _WIN32_WINNT 0x0500 // allow Win2000 specific calls
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include // MFC core and standard components
#undef _WIN32_WINNT
然后,我在这里找到了关于这个问题的具体说明:
这是MFC6.0中的CFileDialog内嵌一个OPENFILENAME结构的原因。如果你定义了_WIN32_WINNT=0x500,那么OPENFILENAME会比之前的版本多一些成员,造成你的工程中的CFileDialog声明就和MFC6.0的DLL中的实现代码不匹配,在运行时会改写MFC的CFileDialog中m_ofn成员之后的变量。
这个问题在MFC7.0中已经修正了,使用的OPENFILENAME从成员变量变成指针(m_pOFN )。你可以参照http://msdn.microsoft.com/msdnmag/issues/0800/c/default.aspx的方法修改你的代码。
名下,若编译了一个Release版本.exe,下次再进行调试时,应首先清除一次,重新编译All,否则会导致
上述问题;
lParam,LONG wParam), 若将函数原形生命诚OnSomeFunction()则会出现该问题;