如何将 LPTSTR 转换为 LPCTSTR&

  • 本文关键字:LPCTSTR 转换 LPTSTR c++
  • 更新时间 :
  • 英文 :


函数参数为 LPCTSTR&

我必须通过LPTSTR变量为LPCTSTR&

如何将LPTSTR转换为LPCTSTR&

预先感谢。

从我旧的C 体验中,您试图通过参考将指针传递给const字符串。编译器认为您将更改指针值。因此,您有2个选项

  1. 使参数const so编译器可以接受lpttr。
  2. 或创建一个LPCTSTR指针(可以更改的LVALUE)并传递。

我必须尝试在以下代码段中解释它。我使用VS 2017 Windows 7 SDK 10

void Foo(LPCTSTR &str)
{
    std::wcout << str;
    str = _T("World");
}
void FooConst(LPCTSTR const &str)
{
    std::wcout << str;
    //str = _T("World"); will give error
}
int main()
{
    LPTSTR str = new TCHAR[10];
    LPCTSTR str1 = str;
    lstrcpy(str, _T("Hello"));
//  Foo(str);// Error E0434 a reference of type "LPCTSTR &" (not const - qualified) cannot be initialized with a value of type "LPTSTR" HelloCpp2017
//  Foo(static_cast<LPCTSTR>(str));// Error(active) E0461   initial value of reference to non - const must be an lvalue HelloCpp2017    d : jfksamplescppHelloCpp2017HelloCpp2017HelloCpp2017.cpp 19
    // Tell compiler you will not change the passed pointer
    FooConst(str);
    // Or provide a lvalue pointer that can be changed
    Foo(str1);
    std::wcout << str1;
    return 0;
}

最新更新