我正在使用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;
会工作,但它不会创建一个新的字符串,它将是相同的指针。我想创建一个新字符串!
答案 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);
只使用字符串库的复制构造函数。