【问题标题】:printing ASCII codes of characters stored in C-string - explanation needed打印存储在 C 字符串中的字符的 ASCII 代码 - 需要解释
【发布时间】:2013-03-26 09:25:19
【问题描述】:

这个程序将 char 转换为它们的 ASCII 码 程序运行良好,但我不明白cout << (int) *p1++ << ' '; 行是如何工作的。 Е特别是 *p1++ 在这个内部 while 循环中:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
void main ()
{
    char s[80];
    char *p1;
    do
    {
        p1 = s;

        cout << "Enter the string";
        gets(p1);
        while (*p1) 
        cout << (int) *p1++ << ' ';
        cout << '\n';
    }
    while (strcmp (s, "End"));
 }

【问题讨论】:

  • 买一本关于语言的书。

标签: c++ string pointers io c-strings


【解决方案1】:
while (*p1) 
    cout << (int) *p1++ << ' ';

意思是:

  • p1指向不为0的字符值(即'\0'
    • 获取它指向的字符(*p1 = 指针p1的解引用)
    • 将此字符转换为int,以便输出ASCII码(数字而不是字符)
    • 在刚刚打印的数字之后输出空格
    • 增加指针p1 使其指向下一个字符

【讨论】:

    【解决方案2】:
    cout << (int) *p1++ << ' ';
    

    这里:

    1. p1 指向的字符转换为int 并写入cout,后跟一个空格。
    2. p1 前进以指向下一个字符(这就是 p1++ 所做的)。

    【讨论】:

      【解决方案3】:

      这很容易:)

      while (*p1) => 只要 p1 指向的字节不为零.... cout 打印 p1 指向的字符,然后增加指针。将结果 (char) 转换为 int 并打印出来。

      while (*p) {do_somthing(); p++;} 是遍历 c 字符串的常用方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-01
        • 1970-01-01
        • 2016-06-21
        • 2016-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多