所以我想把éàâ转换成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)等做过... 所以我在这里,我认为这是编码的问题,希望你可以帮助。
答案 0 :(得分:2)
您有两个编码问题需要处理:
在我完美的世界中,我的源代码是UTF-8,我的编译器生成UTF-8字符串(而不是Windows编码之一)。这是第1步。
第二步:将UTF-8编码的字符串转换为Unicode代码点。
如果您希望它采用其他特定编码,您必须确保1)您的编译器以某种(已知的)方式编码该字符串,并且2)您可以将其解码为其数字表示。
如果您使用UTF-8,则必须解码两个字节才能获得您的号码。如果您使用UTF-16或UTF-32,您将在单个代码点中获取它。如果您使用类似CP-1252的东西,您也可以使用单个字节获取它,但它不会具有与Unicode相同的数值。
弄清楚这些事情,转换很容易。