从旧的字符串创建一个新字符串

时间:2012-12-09 14:22:15

标签: c++ windows string pointers copy

我正在使用C ++(Windows环境)。我有一个:

LPCWSTR mystring;

这有效:

mystring = TEXT("Hello");

但是怎么做? :

mystring = ((((create a new string with text = the content which is in another LPCWSTR 'myoldstring'))))

提前多多感谢!

PS:

mystring = myoldstring; 

会工作,但它不会创建一个新的字符串,它将是相同的指针。我想创建一个新字符串!

3 个答案:

答案 0 :(得分:2)

要使用C ++标准字符串,您需要包含<string>标头。由于您正在处理LPCWSTR(强调W部分),因此您要处理宽字符,因此您希望使用宽字符串(即std::wstring代替{ {1}})。

std::string

答案 1 :(得分:2)

LPTSTR mystring;
mystring = new TCHAR[_tcslen(oldstring) + 1];
_tcscpy(mystring, oldstring);

... After you are done ...

delete [] mystring;

这是一个完整的程序

#include <tchar.h>
#include <windows.h>
#include <string.h>

int main()
{
    LPCTSTR oldstring = _T("Hello");

    LPTSTR mystring;
    mystring = new TCHAR[_tcslen(oldstring) + 1];
    _tcscpy(mystring, oldstring);

    // Stuff

    delete [] mystring;


}

使用cl /DUNICODE /D_UNICODE a.cpp

进行编译

我使用了tchar个宏。如果您不想使用它,那么

#include <windows.h>
#include <string.h>

int main()
{
    LPCWSTR oldstring = L"Hello";

    LPWSTR mystring;
    mystring = new WCHAR[wcslen(oldstring) + 1];
    wcscpy(mystring, oldstring);

    // Stuff

    delete [] mystring;


}

使用cl a.cpp

编译正常

答案 2 :(得分:0)

怎么样

string myNewString = std::string(myOldString);

只使用字符串库的复制构造函数。