我有一个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