sha*_*ote 3 c++ wchar-t vector
我需要在包含wchar_t的c-string的C++程序向量中使用.我试着这样做:
using std::vector;
vector<wchar_t[SIZE]> string_list(100);
Run Code Online (Sandbox Code Playgroud)
但我得到包含以下单词的大错误输出:
error: functional cast to array type «std::vector<wchar_t [512]>::value_type {aka wchar_t [512]}»
Run Code Online (Sandbox Code Playgroud)
我做错了什么?为什么我会收到这样的错误
不幸的是,std::vector由于阵列类型有很多奇怪的原因,原始数组不符合*对元素类型的要求.
如果你真的想要固定大小的数组,你应该使用std::array<wchar_t,SIZE>,因为std::array模板修复了原始数组的问题,而是产生了像正确值一样的对象(例如,a std::array<wchar_t,SIZE>是可分配的,而原始数组则不是).
但是,如果您想要字符串数据并且字符串不是全部都是相同的固定大小,那么您根本不应该使用数组.你最有可能使用std::wstring:
std::vector<std::wstring> string_list;
Run Code Online (Sandbox Code Playgroud)
*除非我弄错了,根据C++ 11规范说它实际上是合法的,std::vector<wchar_t[100]> v(100);因为单独执行此操作不会对元素类型提出任何要求,除了它是默认可构造的,哪些数组是.但是,做大多数有用的东西v确实需要元素类型比数组提供的更多.
| 归档时间: |
|
| 查看次数: |
2417 次 |
| 最近记录: |