【发布时间】:2016-06-21 19:42:30
【问题描述】:
std::string 是否应该在所有平台和标准编译器上以 Ascii 编码保存一组字符?
换句话说,如果我这样做,我能否确定我的 C++ 程序将获得一组 Ascii 字符:
std::string input;
std::getline(std::cin, input);
编辑:
更准确地说,我想确保如果用户输入"a0",我将得到一个包含两个元素的std::string。第一个是97,第二个是48
【问题讨论】:
-
绝对不能保证。 UTF-8 是一种非常流行的字符编码,如果您在这样的系统上键入“á0”,您的字符串将包含 三个 元素。
-
@MarkRansom 我明白了。我将发布另一个关于如何强制或确保输入 Ascii 字符串的问题。谢谢
-
"我有一个变量
std::string xml。编译器或 STL 是否强制内部只有 XML 字符串?" - 不。类型是“char”而不是“XML”或“Unicode”。不要混淆类型、格式或编码。那里有一个有效的问题:“如何控制标准 IO 编码?” -
@Fozi 是的,你是对的.. 我问过这个stackoverflow.com/questions/37953843/…
-
@HumamHelfawi:我认为正确的行为是,验证如果这是您的前提条件,输入仅包含 ASCII,这很容易做到,并且失败并出现明显错误如果输入不符合您的条件,则发送消息。我认为您不能从 unicode 字符“返回”到代表用户击键的 ASCII 字符——这可能非常困难。如果您真的在问如何重新配置终端以使其行为不同,我认为这也将很难并且取决于平台。