C++ C2440 错误,无法从 'std::_String_iterator<_Elem,_Traits,_Alloc>' 转换为 'LPCTSTR'

标签 c++

不幸的是,我的任务是编译一个旧的 C++ DLL,以便它可以在 Win 7 64 位机器上运行。我的 C++ 经验为零。我已经解决了其他问题,但是这个问题难倒了我,我还没有在其他地方找到解决方案。以下代码引发 C2440 编译器错误。

错误:“错误 C2440:‘’:无法从‘std::_String_iterator<_Elem,_Traits,_Alloc>’转换为‘LPCTSTR’”

代码:

#include "StdAfx.h"
#include "Antenna.h"
#include "MyTypes.h"
#include "objbase.h"

const TCHAR* CAntenna::GetMdbPath()
{
    if(m_MdbPath.size() <= 0) return NULL;
    return LPCTSTR(m_MdbPath.begin());
}

“m_MdbPath”在 Antenna.h 文件中定义为 字符串 m_MdbPath;

任何人可以提供的帮助或指导都将非常有帮助。先感谢您。如果需要,我很乐意提供有关代码的更多详细信息。

最佳答案

std::string 有一个 .c_str() 成员函数,它应该可以完成您要查找的内容。它将返回一个 const char*(const wchar_t* with std::wstring)。 std::string 也有一个 empty() 成员函数,我建议使用 nullptr 而不是 NULL 宏。

const TCHAR* CAntenna::GetMdbPath()
{
    if(m_MdbPath.empty()) return nullptr;
    return m_MdbPath.c_str();
}

关于C++ C2440 错误,无法从 'std::_String_iterator<_Elem,_Traits,_Alloc>' 转换为 'LPCTSTR',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34094344/

相关文章:

c++ - 如果已知,则使用编译时常量

c++ - map 的二维数组替代

c# - 获取由 3d 多边形包围的点

c++ - 在引用定义中使用 constexpr 和 const

c++ - 推断 lambda 的类型衰减为函数指针

c++ - 如何将 boost::filesystem::directory_entry::path() 值分配给字符串?

c++ - Xcode:错误:函数样式强制转换或类型构造的预期 '('

c++ - 为什么在比较字符串时出现错误 "no match for ' operator= =' "?

c++ - std::sort 中的 SIGSEGV,如何缩小范围

c++ - 这个 for 循环是如何终止的?