none
error C2664: 无法将参数从“ LCPTSTR ”转换为“ const char* ” RRS feed

  • 问题

  • BOOL CImage::Load(LCPTSTR lpcstr)

    {

    FILE* f = fopen(lpcstr, "rb");

    ......

    }

    error C2664: "FILE* f = fopen(const char*, const char*)"无法将参数1从“ LCPTSTR ”转换为“ const char* ”

    • 已编辑 wcu 2018年4月25日 15:43
    2018年4月25日 15:39

全部回复

  • Hi,

    感谢在MSDN论坛发帖。

    >>error C2664: "FILE* f = fopen(const char*, const char*)"无法将参数1从“ LCPTSTR ”转换为“ const char* ”

    你指的是LPCTSTR吧。你的工程是不是定义了unicode类型?LPCTSTR在WinNT中的定义根据是否定义了UNICODE有所不同。

    #ifdef UNICODE
     typedef LPCWSTR LPCTSTR; 
    #else
     typedef LPCSTR LPCTSTR;
    #endif
    

    LPCSTR定义是const char*,而LPCWSTR的定义则为WCHAR*。 你可以参考下面的文档。

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx

    关于如何在不同的字符串类型之间进行转换,你可以参考下面的示例。

    https://msdn.microsoft.com/en-us/library/ms235631.aspx

    希望对你有所帮助。

    Best Regards,

    Baron Bi


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年4月26日 1:49
  • BOOL CImage::Load(LPCTSTR lpcstr){ FILE* f = _tfopen(lpcstr, TEXT("rb")); ...}


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2018年5月11日 2:20
    版主