对C风格字符串结束符的测试 & 直接用ASCII码输出字符

 

// szString.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <cassert>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
 char const* pstr="10 45"; //为了测试空格的作用中间的3换成了空格
 char const* pstr2=pstr;
 cout<<"strlen(pstr) = "<<strlen(pstr)<<endl;
 assert(strlen(pstr)==5);

/*
 for(;*pstr!='\n';pstr++) //结束符错误!会将this is a string以及内部代码段的其他内容打印出来
 {
  cout<<*pstr;
 }
*/

 //正确的写法:指向的字符除了空字符外均为true值
 while(*pstr)
 {
  cout<<*pstr;
  pstr++;
 }
 cout<<"***finish"<<endl; //为了显示出字符串的结尾而加上了*号。结果显示10 45***finish

 //另一种不太正确的写法
 while(*pstr2++)
 {
  cout<<*pstr2;  //在此插入断点进行调试观察指针变化*pstr2=>0('\060')>' '>4>5>0,最后一次pstr2==""
 }
 cout<<"***finish"<<endl; //结果显示0 45 ***finish(空字符值为ASCII的0(是'\0'而非'\060')显示出来占一个空位)
 cout << '\077' << 0 <<'\0'<<'\60'<<endl; //字符数字0的ascii码是48八进制为060   输出:?0 0换行
 ::system("pause");
 return 0;
}

/*注:关于直接用ASCII码输出字符
  比如,查一下ASCII码表,我们找到问号字符(?)的ASCII值是63,
  那么我们可以把它转换为八进值:77,然后用 '\77'来表示'?'。由于是八进制,
  所以本应写成 '\077',但因为C,C++规定不允许使用斜杠加10进制数来表示字符,
  所以这里的0可以不写。

 用UltraEdit32可以在光标处按ALT+回车来查看当前字符的码值
*/


 

posted on 2009-04-07 06:52  TobyLin的学习之路  阅读(1502)  评论(0编辑  收藏  举报

导航