2013-03-26 76 views
2

该程序将字符转换为ASCII码 程序完美运行,但我不明白cout << (int) *p1++ << ' ';行如何工作。 Еspecially*p1++在该内while循环:打印存储在C字符串中的字符的ASCII码 - 需要说明

#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")); 
} 
+1

获取有关该语言的书籍。 – 2013-03-26 09:39:12

回答

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

这里:

  1. 字符由p1指向被转换为int,并写入cout后跟一个空格。
  2. p1高级指向下一个字符(这是p1++所做的)。
4
while (*p1) 
    cout << (int) *p1++ << ' '; 

手段:

  • p1指向字符值分别为0(即'\0'
    • 不同获得它指向(*p1 =解引用指针p1的字符)
    • 将此字符强制转换为int,以便输出ASCII码泰德(数字代替文字)已刚刚打印的号码后
    • 输出空间
    • 增加指针p1,使之指向下一个字符
0

这是很容易:)

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

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