打印存储在C字符串中的ASCII字符代码 - 需要说明

时间:2013-03-26 09:25:20

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

该程序将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"));
 }

3 个答案:

答案 0 :(得分:4)

while (*p1) 
    cout << (int) *p1++ << ' ';

表示:

  • p1指向的字符值与0不同(即'\0'
    • 获取它指向的角色(*p1 =取消引用指针p1
    • 将此字符强制转换为int,以便输出ASCII代码(数字而非字符)
    • 刚刚打印的数字后的输出空间
    • 增加指针p1以使其指向下一个字符

答案 1 :(得分:1)

cout << (int) *p1++ << ' ';

下面:

  1. p1指向的字符将转换为int并写入cout后跟一个空格。
  2. p1已提前指向下一个字符(这是p1++所做的事情。)

答案 2 :(得分:0)

这很容易:)

while(* p1)=&gt;只要p1指向的字节不为零.... cout&lt;&lt; (int)* p1 ++&lt;&lt; ''; =&GT; p1指向的print char,然后递增指针。将结果(char)转换为int并打印出来。

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