【发布时间】:2020-11-10 19:56:23
【问题描述】:
我的高级目标是通过将每个字符转换为整数,将任何字符串(可以包括非 ascii 字符)转换为整数向量。
我已经有一个python代码sn-p用于这个目的:
bytes = list(text.encode())
现在我想要一个 C++ 等价物。我尝试了类似的东西
int main() {
char const* bytes = inputText.c_str();
long bytesLen = strlen(bytes);
auto vec = std::vector<long>(bytes, bytes + bytesLen);
for (auto number : vec) {
cout << number << endl;
}
return 0;
}
对于像“testΔ”这样的输入字符串,python 代码输出 [116, 101, 115, 116, 206, 148]。
但是 C++ 代码输出 [116, 101, 115, 116, -50, -108]。
我应该如何更改 C++ 代码以使它们保持一致?
【问题讨论】:
-
“我知道如何用另一种语言做到这一点”不是使用该语言标签的理由。
-
如果您使用 unicode 字符,则不能使用
char*,您可能希望使用宽字符和 unicode 文字 stackoverflow.com/questions/6796157/… 例如 Python 的str.encode默认使用 utf-8,所以这里是C++中对utf-8支持的解释stackoverflow.com/questions/50403342/… -
如果您坚持使用 ASCII 空间,那么向量中的无符号数据类型应该会有很大帮助。
-
@user4581301 Δ 不在 ASCII 空间中。
-
确实如此。那天晚上我在看电视,显然是外星人建造了金字塔。也许他们也对三角形负责。
标签: c++