循环时字符的顺序是什么

时间:2018-01-24 21:48:46

标签: c++ for-loop vector

好吧所以这很难说出来。所以我有一些代码:

vector <char> Chars;
for(char c = '0'; c <='z'; c++) {
    Chars.push_back(c);
}

因此,它有助于为我的角色vector添加字符,因为它会添加选择金额。例如:

vector <char> Chars;
for(char c = '0'; c <='9'; c++) {
    Chars.push_back(c);
}

获取0123456789和:

vector <char> Chars;
for(char c = '0'; c <='Z'; c++) {
    Chars.push_back(c);
}

获取0123456789:;&lt; =&gt;?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ。我怎样才能(a)获得所有的角色,以及(b)这个的顺序是什么?为什么他们在数字之后有一些符号但不是全部?

3 个答案:

答案 0 :(得分:2)

我认为以下内容对您有所帮助:

enter image description here

这意味着,如果从“0”字符开始循环,则该表对应于该表中的数字48。你只是从那里递增,直到'Z'。如果你只想要字母数字字符,只需将你的循环分成两部分。

答案 1 :(得分:2)

  

(b)这个顺序是什么?

它是您使用的系统的本机字符编码中指定的顺序。它可能是ASCII,ISO / IEC 8859或UTF-8中的一个,所有这些都在[0,128]范围内相同。

  

为什么他们在数字后面有一些符号而不是全部符号?

因为有些符号在数字之前,而有些符号在数字之后。

这只是委员会设计编码所选择的顺序。这种选择背后并不一定是一种深刻的哲学。它可能是从计算机系统之前的电传代码继承的异常。

  

我如何(a)获得所有角色

您可以使用数字限制来查找最小值和最大值,并使用循环来迭代它们:

for(int i = std::numeric_limits<char>::min();
        i < std::numeric_limits<char>::max(); i++) {
    char c = i;
    Chars.push_back(c);
}

答案 2 :(得分:1)

每个字符都有一个ASCII码。

请参阅https://en.wikipedia.org/wiki/ASCII

恰好有些符号,但并非所有符号都位于&#9; 9&#39;之间。和&#39; A&#39;。

正如其他人所指出的,它甚至可能无法保证哪个符号在该表中的位置。但我想是的&#39; A&#39;到&#39; Z&#39;&#39; a&#39;到&#39; z&#39;和&#39; 0&#39;到&#39; 9&#39;保证是连续的。

另见: Does C and C++ guarantee the ASCII of [a-f] and [A-F] characters?