是否可以在引号中加上引号(„)

时间:2019-05-20 17:42:12

标签: c++ c++11

我正在尝试将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('#');
}

1 个答案:

答案 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'#');
}

Live Demo

或者您可以考虑使用std::wstring存储宽字符。

Gem Taylor points out一样,如果您需要处理扩展表情符号,则可能需要考虑使用wchar32_t