我有一個WCHAR []:C++:將L「」字符串分配給WCHAR []?
WCHAR foo[200];
我想值複製到其中:
if (condition)
{
foo = L"bar";
}
else
{
foo = L"odp";
}
什麼是做到這一點的最好方法是什麼?
我有一個WCHAR []:C++:將L「」字符串分配給WCHAR []?
WCHAR foo[200];
我想值複製到其中:
if (condition)
{
foo = L"bar";
}
else
{
foo = L"odp";
}
什麼是做到這一點的最好方法是什麼?
取決於你需要做什麼,你可以改變foo的類型:
const WCHAR *foo;
if (condition)
{
foo = L"bar";
}
else
{
foo = L"odp";
}
這是好的,如果唐不需要向foo添加更多數據。
我會使用std::wstring
而不是WCHAR
陣列。
std::wstring foo;
...
if (condition)
{
foo = L"bar";
}
else
{
foo = L"odp";
}
另一種方法是使用從C世界未來有些髒wstrcpy功能,什麼是不approriate還是安全的,如果你可以去清潔C++的方式。
wcscpy
,雖然最好的事情是使用std::wstring
來代替。
std::wstring foo;
if (condition)
foo = L"bar";
else
foo = L"odp";
或者,如果你堅持要用wcscpy
:
WCHAR foo[200];
if (condition)
wcscpy(foo, L"bar");
else
wcscpy(foo, L"odp");
如果你是在談論分配一個值,你正在做的方式是完美的。如果您使用的是Visual C++並且想要複製W字符串,請考慮使用更安全的功能wcscpy_s(它比wcscpy更安全)。
errno_t wcscpy_s(
wchar_t *strDestination,
size_t numberOfElements,
const wchar_t *strSource
);
我給你一個簡單的例子:
wchar* wstrOther = "hello";
wcscpy_s(foo, 200, wstrOther);
的foo
變量實際上是一個指向字符串的第一個字符。因此將另一個字符串分配給它只會替換指針和泄漏內存。
最簡單的方法是使用字符串類,如std::wstring
,或使用一些舊的C函數,如strncpy
。
使用SRD :: wstring的它看起來像:
std::wstring foo;
if(condition)
{
foo = L"bar";
}
else
{
foo = L"odp";
}
相同的答案http://stackoverflow.com/a/3010190/94687,這是更好的評價。:( – 2015-02-17 11:09:22
相同的答案http://stackoverflow.com/a/3010190/94687,這是更好的評價。 :( – 2015-02-17 11:08:48