【问题标题】:Is there any way to increase by one a character?有什么办法可以增加一个字符吗?
【发布时间】:2014-03-12 01:57:34
【问题描述】:

例如当你用 a 增加一个变量时

for(k=1; k<21; k++)

对吗?这意味着 for 序列将重复直到 k 为 20 那么,有什么办法可以增加字符变量呢?像 a,b,c,d,e,f...? 谢谢。

问题是我想制作一张桌子,但要带有字符并且字符加一。

自从我是学生以来,我没有尝试过任何东西,我只是不知道如何做这样的事情,或者有任何命令可以做到这一点?

【问题讨论】:

  • char c='a'; c++; 可以工作

标签: c++ c variables dev-c++


【解决方案1】:

当然。

char k;
for (k = 'a'; k <= 'z'; ++k) { }

【讨论】:

  • 这依赖于有一个字符集,其中'a''z' 是连续的,例如 ASCII。实际上,假设这一点是非常安全的,尽管标准 C 和 C++ 可以在 EBCDIC 机器上使用,并且它们可能会在未来具有不同字符集的机器上使用。此外,如果您说的语言使用的字母表略有不同(例如瑞典语),您会通过这种方法遗漏一些字母。
  • 另外,其他语言不会使用所有的 a-z,因此您会包含不正确的字母。
【解决方案2】:

所有字符都有一个关联的数值。请看以下链接:http://www.ascii-code.com/

这是一个 sn-p:您会看到大写字母“A”以数字 65 开头,然后 B、C、D 等都是额外的 1。

65  101 41  01000001    A   &#65;       Uppercase A
66  102 42  01000010    B   &#66;       Uppercase B
67  103 43  01000011    C   &#67;       Uppercase C
68  104 44  01000100    D   &#68;       Uppercase D
69  105 45  01000101    E   &#69;       Uppercase E

小写相同,只是起始值为97不同:

97  141 61  01100001    a   &#97;       Lowercase a
98  142 62  01100010    b   &#98;       Lowercase b
99  143 63  01100011    c   &#99;       Lowercase c
100 144 64  01100100    d   &#100;      Lowercase d
101 145 65  01100101    e   &#101;      Lowercase e

由于一个字符实际上只是表示这个 ascii 整数值,因此您可以按照 Lashane 在他的评论中指出的那样执行并像整数一样循环。

【讨论】:

    【解决方案3】:

    char 是一种(相对较窄的)整数类型,您可以像对任何其他数值类型一样对 char 值执行算术运算。

    但要小心。语言只保证'0''1'、...、'9'的数值是连续的,所以这样:

    for (char c = '0'; c <= '9'; c ++) {
        // ...
    }
    

    将遍历十进制数字。该语言对字母没有这样的保证,所以:

    for (char c = 'a'; c <= 'z'; c ++) {
        // ...
    }
    

    保证遍历 26 个小写字母。

    实际上,您不太可能遇到无法正常工作的系统。它恰好适用于使用基于 ASCII 字符系统(包括 Latin-1、Unicode 等)的任何系统。但 IBM 大型机使用不同的字符集 EBCDIC,其中字母没有连续值。

    如果您需要遍历大写字母,您可以不必担心您的代码不是 100% 可移植的,也可以编写不依赖于其表示的代码:

    const char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
    for (int i = 0; i < sizeof alphabet; i ++) {
         const char c = alphabet[i];
         // ...
    }
    

    (但即使这样也会跳过其他小写字母,如'é''ç'。)

    【讨论】:

    • 这仅适用于窄字符,即它不适用于 UTF-8。哦,i18n 的幸福。
    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 2019-02-04
    • 1970-01-01
    • 2015-07-13
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多