如何将accentuated char转换为number(int)cpp?

时间:2017-09-21 16:39:40

标签: c++ encoding typeconverter

所以我想把éàâ转换成int

#include <iostream>

using namespace std;

int main()
{
    string  a =  "é";
    unsigned long b = (unsigned long) a[0];
    cout << (string) b << endl;
    /* error: no matching conversion for C-style cast from 'unsigned 
       long' to 'string' (aka 'basic_string<char, char_traits<char>, 
       allocator<char> >') 
    */
    cout << b << endl;
    return 0;
}

我已经用(char)等做过... 所以我在这里,我认为这是编码的问题,希望你可以帮助。

1 个答案:

答案 0 :(得分:2)

您有两个编码问题需要处理:

  • 编译器如何将源代码转换为对象数据
  • 如何将对象数据转换为数字

在我完美的世界中,我的源代码是UTF-8,我的编译器生成UTF-8字符串(而不是Windows编码之一)。这是第1步。

第二步:将UTF-8编码的字符串转换为Unicode代码点。

如果您希望它采用其他特定编码,您必须确保1)您的编译器以某种(已知的)方式编码该字符串,并且2)您可以将其解码为其数字表示。

如果您使用UTF-8,则必须解码两个字节才能获得您的号码。如果您使用UTF-16或UTF-32,您将在单个代码点中获取它。如果您使用类似CP-1252的东西,您也可以使用单个字节获取它,但它不会具有与Unicode相同的数值。

弄清楚这些事情,转换很容易。