我正在尝试将push_back()
符号„
变成std::vector<char>
。
我不断收到错误消息:
字符太大,无法包含字符文字类型
void CharVect (std::vector<char>&temp)
{
temp.push_back('-');
temp.push_back(',');
temp.push_back('.');
temp.push_back('?');
temp.push_back('!');
temp.push_back(':');
temp.push_back(';');
temp.push_back('(');
temp.push_back(')');
temp.push_back('„'); // error
temp.push_back('”'); // error, but " works
temp.push_back('{');
temp.push_back('}');
temp.push_back('*');
temp.push_back('#');
}
答案 0 :(得分:2)
使用wchar_t
:
#include <vector>
void CharVect(std::vector<wchar_t> &temp)
{
temp.push_back(L'-');
temp.push_back(L',');
temp.push_back(L'.');
temp.push_back(L'?');
temp.push_back(L'!');
temp.push_back(L':');
temp.push_back(L';');
temp.push_back(L'(');
temp.push_back(L')');
temp.push_back(L'„'); // works
temp.push_back(L'”'); // works
temp.push_back(L'{');
temp.push_back(L'}');
temp.push_back(L'*');
temp.push_back(L'#');
}
或者您可以考虑使用std::wstring
存储宽字符。
与Gem Taylor points out一样,如果您需要处理扩展表情符号,则可能需要考虑使用wchar32_t
。