std :: string应该只有Ascii字符吗?

Hum*_*awi 2 c++ string ascii c++11

std::string认为是对所有的平台和标准的编译器ASCII编码的一组字符?

换句话说,如果我这样做,我可以确定我的C++程序将获得一组Ascii字符:

std::string input;
std::getline(std::cin, input);
Run Code Online (Sandbox Code Playgroud)

编辑:

换句话说,我想确保如果用户输入,"a0"我将得到一个std::string包含两个元素.第一个是97,第二个是48

Lig*_*ica 6

std::string不成立"人物"; 它持有字节.

这些字节可以通过ASCII或EDBCIC或Unicode编码形成一些人类可读的字符串.它们可以是存储计算机可读信息(例如JPEG图像)的二进制编码.它们可能是外星人关于如何连续三周使用Stack Overflow而不被贬低甚至一次的指导.它们可能是完全随机的白噪声.

您的程序需要了解它正在读取的数据实际意味着什么,以及它是如何编码的.这应该是程序员的任务的一部分.

(这是不幸的,现在误导了,这char是命名的char.)


R S*_*ahu 3

不,不能保证

std::string input;
std::getline(std::cin, input);
Run Code Online (Sandbox Code Playgroud)

将仅返回 ASCII 字符。a 所保存的值的范围char不限于 ASCII 字符。

如果您的平台使用与 ASCII 不同的编码,您显然会得到一组不同的字符。

即使您的平台使用 ASCII 编码,如果char平台上是无符号类型,那么它也可以很容易地保存扩展的 ASCII 字符

  • `std::string` 可以保存的内容或 `std::cin` 可以读取的内容甚至不需要与“平台编码”、ASCII 或扩展 ASCII 有任何关系。尝试通过管道输入 `dd` 或 `cat someimage.jpg` 的结果,您就会看到:) 正确的答案是 _`std::string` 根本没有编码的概念_。`std::cin` 也没有。 (4认同)