功能参数为LPCTSTR&

我必须将LPTSTR变量作为LPCTSTR&传递。

如何将LPTSTR转换为LPCTSTR&

提前致谢。

最佳答案

根据我以前的C ++经验,您试图通过引用将指针传递给const字符串。编译器认为您将要更改指针值。所以你有2个选择


将参数设置为const,以便编译器可以接受LPSTR。
或创建一个LPCTSTR指针(可以更改的左值)并传递它。


我必须尝试在以下代码片段中对其进行解释。我使用了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 : \jfk\samples\cpp\HelloCpp2017\HelloCpp2017\HelloCpp2017.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;
}

关于c++ - 如何将LPTSTR转换为LPCTSTR&,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46538109/

10-11 15:38