字符串"\000"的问题

alfonso984 2009-04-17 10:42:37
如题 通常字符串以一个字节0结束,现在我用的一个API函数需要字符串以一个字为单位,网上BLOG有人说可以在我的字符串后面补充一个0,具体做法是在我的字符串后面加上"\000"

例如"北京"加上\000后就是 "北京\000";

请问\000 是0x00吗?
...全文
6360 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
alfonso984 2009-04-22
  • 打赏
  • 举报
回复
受教了 谢谢


帖子我结了
like_33833006 2009-04-21
  • 打赏
  • 举报
回复
强就一个字
wanhui219 2009-04-21
  • 打赏
  • 举报
回复
四,五楼明显对C不了解
ustbleetom 2009-04-21
  • 打赏
  • 举报
回复
看不懂:(也看一下~~
jackyjkchen 2009-04-21
  • 打赏
  • 举报
回复

int main()
{
cout<<"北京\045"<<endl; //输出 “北京%”(%号的八进制ascii就是045),如果按照4楼和11楼的观点,只应该输出北京才对,后面的45忽略
cout<<strlen("北京\045")<<endl; //字符串长度5,strlen遇到0x00结束,可见\045并没有被拆成\0和45,不要把简单问题想复杂
system("pause");
return 0;
}
jackyjkchen 2009-04-21
  • 打赏
  • 举报
回复 1

int main()
{
cout<<"北京\141"<<endl;//输出 “北京a”,可见\141和在字符、数字里的作用一样,都是代表8进制,a的ASCII码97,八进制就是141
system("pause");
return 0;
}
baiwei156 2009-04-21
  • 打赏
  • 举报
回复
光争辩没用,所以偶来上代码


int _tmain(int argc, _TCHAR* argv[])
{
cout<<sizeof("北京\000");
system("pause");
return 0;
}


结果是6....
jackyjkchen 2009-04-21
  • 打赏
  • 举报
回复 1
[Quote=引用 4 楼 mosaic 的回复:]
引用 1 楼 fibbery 的回复:
\000应该是代表8进制整数0,如果整数大小为4个字节,那么以为着你增加了4个字节。
我觉得你可以使用\0\0,来完成增加一个字(WORD)0,比如:"北京\0\0";


老大,lz问的是字符串"\000",不同于数值的\000, 第一个\0,后面两个0就是普通的字符,总共就是三个字节。

如3楼所说,后面两个0在一般的字符串操作时不起什么作用。
[/Quote]
不是吧,不管字符串还是字符里,转义符号\的意思都一样吧
heguodong 2009-04-21
  • 打赏
  • 举报
回复 1
[Quote=引用 11 楼 kendy_ke 的回复:]
"\000" 我的理解是. c 编译器会把""里面的东西当成常量字符串理解,也就是说当遇到空字符'\0',就结束,不会理会后面的东西
显然"\000" 第一个就是 '\0'. 所以 "\000" 与'\0' 是一样的 .
[/Quote]

同意
k1988 2009-04-21
  • 打赏
  • 举报
回复
我一般使用string a;
a.append("\0");
lion19982002 2009-04-21
  • 打赏
  • 举报
回复
学习了
zgjxwl 2009-04-21
  • 打赏
  • 举报
回复
呵呵
性能侠客行 2009-04-21
  • 打赏
  • 举报
回复
"\000" 我的理解是. c 编译器会把""里面的东西当成常量字符串理解,也就是说当遇到空字符'\0',就结束,不会理会后面的东西
显然"\000" 第一个就是 '\0'. 所以 "\000" 与'\0' 是一样的 .
Cpp权哥 2009-04-21
  • 打赏
  • 举报
回复
\000就表示一个数值为0的字符,它只占一个字节,也就是0x00。
enter333 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hairetz 的回复:]
\0已经标识字符串结束了,后面的东西人家不管的
[/Quote]

\0 结束啊。
mosaic 2009-04-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fibbery 的回复:]
\000应该是代表8进制整数0,如果整数大小为4个字节,那么以为着你增加了4个字节。
我觉得你可以使用\0\0,来完成增加一个字(WORD)0,比如:"北京\0\0";
[/Quote]

老大,lz问的是字符串"\000",不同于数值的\000, 第一个\0,后面两个0就是普通的字符,总共就是三个字节。

如3楼所说,后面两个0在一般的字符串操作时不起什么作用。
  • 打赏
  • 举报
回复
\0已经标识字符串结束了,后面的东西人家不管的
fibbery 2009-04-17
  • 打赏
  • 举报
回复
\000很可能等于0x00000000
fibbery 2009-04-17
  • 打赏
  • 举报
回复
\000应该是代表8进制整数0,如果整数大小为4个字节,那么以为着你增加了4个字节。
我觉得你可以使用\0\0,来完成增加一个字(WORD)0,比如:"北京\0\0";
fibbery 2009-04-17
  • 打赏
  • 举报
回复
嘿,你吃饭了吗?

我去钓鱼!
加载更多回复(2)

33,324

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧