C++开发问题汇总

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()则会出现该问题;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值