【发布时间】:2013-03-17 21:11:45
【问题描述】:
我有一个非常大的 wchar_t 数组。我想从这个 wchar_t 数组的一部分构造一个 wstring,例如在 i 和 j 之间。
我不想把大的char数组变成wstring,然后再取一个子串。
请问我该怎么做?
【问题讨论】:
我有一个非常大的 wchar_t 数组。我想从这个 wchar_t 数组的一部分构造一个 wstring,例如在 i 和 j 之间。
我不想把大的char数组变成wstring,然后再取一个子串。
请问我该怎么做?
【问题讨论】:
使用迭代器对构造函数:
std::wstring str(arr + i, arr + j + 1); //need one past the end
在这种情况下,添加是有效的,因为指针是随机访问迭代器。对于在迭代器不支持operator+ 时有效的通用形式,请使用std::next(arr, i) 和std::next(arr, j + 1)。如果担心泛型,std::begin 可以用来代替 arr,因为它适用于数组和标准容器。
【讨论】: