标题:[求助] 本人菜鸟,求助各位一个书上的问题
只看楼主
wxa6687
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-8-14
 问题点数:0 回复次数:4 
[求助] 本人菜鸟,求助各位一个书上的问题
#include<iostream>
#include<cstdlib>


using namespace std;
const char* st= "The expense of spirit\n";
int main()
{

int len=0;
while(*st++) ++len;
cout<<len<<st-len-1;
system("pause");

}

程序运行结果输出 1. 22The expense of spirit
为什么一共加起来是22个字符,串中的空格应该不计算在内的呀!
2. 另外请问 st-len-1 是如何对输出 st 定位的。

谢谢指教
搜索更多相关主题的帖子: include spirit system 
2007-08-23 15:15
远去的列车
Rank: 1
等 级:新手上路
威 望:2
帖 子:205
专家分:0
注 册:2007-8-7
得分:0 

空格当然算


C++学习
2007-08-23 16:00
wxa6687
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-8-14
得分:0 
请问兄台  空格和空字符有区别吗?     为什么while(*st++)遇空字符值为ture
2007-08-24 17:31
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 

你所说的"空字符"指什么? NULL? 空格?

用图解:
你的字符串如下, 用| |括起来的是一个字节, \0是字符串结束的零字节.. 也就是ASCII的0(NULL, 和字符'0'不一样,'0'的ASCII=0x30)

|T|H|E| |E|X|P|E|N|S|E| |O|F| |S|P|I|R|I|T|\n|\0|

st

可见st只有指向最后的\0, *st==0, 此时while(0)才会退出, 否则都是TRUE
另外:
从程序看, 每过一个字节len+1, 那么最后len就是从T到\n的字符串长度, 此时st指向\0, 则st-len-1 指向T


女侠,约吗?
2007-08-24 20:45
远去的列车
Rank: 1
等 级:新手上路
威 望:2
帖 子:205
专家分:0
注 册:2007-8-7
得分:0 
空格的ASCII码是32,'\0'的ASCII码是0
测试用:
int main()
{
chat a = ' ';
char b = '\0';
cout << (a==b ? "y":"n") << endl;
cout << int(a) << endl << int(b) << endl;
}

C++学习
2007-08-25 09:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-164900-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.081629 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved