[英]Assign variable wstring to Char array in C++
我有如下字符数组:
TCHAR name[256] = L"abc";
我还有另一个wstring矢量,如下所示
std::vector<std::wstring> nameList;
nameList.push_back(L"cde");
nameList.push_back(L"fgh");
我想将nameList向量的第一个元素分配给name数组,
有人可以帮我吗?
您可以使用std::copy
; name
是一个有界的数组,但是它作为函数参数的使用会衰减到指向其第一个元素的指针,这满足了输出迭代器的要求。
所以你可以:
wchar_t name[256] = L"abc";
std::vector<std::wstring> nameList;
nameList.push_back(L"cde");
nameList.push_back(L"fgh");
std::copy(nameList.front().begin(), nameList.front().end(), name);
注意:这不会在缓冲区中添加任何尾随\\0
终止符; 如果您想替换/覆盖name
,则还应该使用std::wstring
并为自己节省一些麻烦
鉴于您的问题以及必须使用数组而不是wstring的假设,最好的选择可能是使用std::copy
甚至是老式的memcpy
。 但是,由于以下两个原因,它们很危险:
也就是说,您可以使用以下命令安全地执行此操作:
if (nameList[0].size() >= 256) {
throw std::length_error("string too long");
}
std::copy(nameList[0].begin(), nameList[0].end(), name);
name[nameList[0].size()] = TCHAR(0);
如果TCHAR不是wchar_t,您还可以添加static_assert
来强制编译器错误,但由于复制将逐字符进行隐式转换,因此可能没有必要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.