急急!C build源代码中如何表示 0 ASCII码?(200分)

  • 主题发起人 主题发起人 wenjinshan
  • 开始时间 开始时间
这样太烦了.
就像"hello"使用如下方法:
buf[0]='h';
buf[1]='e';
buf[2]='l';
buf[3]='l';.....
这种方法我也知道,不好!
 
你那一段里的string的原型是哪一种?已知它不是CString、AnsiString或std::string。
我试过以上三种类型的字符串,结果都是一样的。
 
有趣,为什么没有继续?
up
 
"你那一段里的string的原型是哪一种?"
在vc.net下直接使用string即可!
 
HORNEY的写法有点错误,不能是1到6!
但不要离题万里!节约点空间.
 
>>在vc.net下直接使用string即可
大侠,你该不是把Visual C++和Visual C#混为一谈了吧?晕倒!
 
在 VC 下是可以的
因为 CString 是以两个 0 为结束标志的
而在 BCB 中则是跟 Ansii C/C++ 一样的,不行
 
char test[6]={0x00;}//编译器自动付6个0(VC)
或者用C run time 库的函数:
memset(test,0,6);
CBuilder肯定支持C run time的(和unix兼容)
 
“hello /xff/x0/xff Hello world!/n”在VC和C#下面输出结果是什么???
 
to Sachow: vc下可以的!!!不要再讨论VC了.
vc6的代码:
LPTSTR S1 = "Hello /x0 World/x0!";
MessageBox(S1);
//World
MessageBox(&S1[8]);
//Hello
vc.net代码:
int l;
string S1 = "Hello /x0 World/x0!";
l = S1.Length;
//l=15
button1.Text=S1;
to Crane 这种方法上面已讨论过了,如果不全是0又怎么办?你这种方法不行.
to BCB_FANS: 显示Hello或Hello World!,要看你的代码如何写.
 
上面写错了,应作:
vc6的代码:
LPTSTR S1 = "Hello /x0 World/x0!";
MessageBox(S1);
//Hello
MessageBox(&S1[8]);
//World
 
VC的那一段代码在BCB下同样通过,效果一样(已经测试过了):
LPTSTR S = "Hello /x0 World/x0!";
MessageBox(NULL,S,NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
MessageBox(NULL,&S[8],NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
把你的需求说得更清楚一些。
 
是的,我刚刚重试了一下,是可以的.
结束.
总结:
包含0字符的字符串使用方法:
delphi string
vc string或LPTSTR
cbc LPTSTR
 
接受答案了.
 
????居然不行??
好,再试试这个:老U都能过,CB再不能过它就是SB![8D]
char testu[27] = "";
memcpy(testu,"Hello /0 World /0",27);
 
wenjinshan, 试试给我各答复
 
to Crane:
memcpy(testu,"Hello /0 World /0",27);中的"Hello /0 World /0"实际上
被编译器当作LPTSTR或其它字符串类型了,memcpy在这里没有任何作用,而且27也
不好求出来.
我只是想知道有什么字符串类型可以处理0字符,目前发现了LPTSTR.
举例:
方法一:char b[]='hello';
方法二:move(b,'hello',5);
方法二虽然也行,但不合题意.当然,贵在你有独特的思路.
 
LPCSTR是什么?
const char *
你给一个LPCSTR类型的变量赋个值试试(不是指的赋初始值)?注意const关键字!
LPCSTR类型的变量一般只用于做函数的in类型参数。
用&S1[8]的方法可以访问'/0'后面的数据,因为它在内存中是存在的,而且因为你知道要
访问那个地方,但如果用在长度不定的字符串中怎么办,你根本不能用strlen之类的基本
字符串函数获取字符串的长度,而且对于char *类型来说,它只是简单的数据类型,不用
strlen之类的基础函数,你是无法知道一个字符串的确切长度的,除非用面向对象的方法
来实现,在现在主流的字符串类中,都有一个Length成员,每当字符串值的长度改变时,
这个成员的值也会改变,这样能够弥补传统C字符串中不能包含'/0'值的不足,解决其遇'/0'
而止的问题,从而可以在该串中存储任何数据并正常使用。
不要过于草率地下一些结论,深入研究一下字符串的储存和工作原理吧。
 
就是char [],这已达到我的要求,本来想使用string,发现它不行.
字符串的长度另给一个int变量,不需要char[]本身提供,
目的是把包含0字符的特殊格式保存为文件或用tcp/ip发送出去.
现在发现,有时候string还不如char[]。
to Sachow:
“用&S1[8]的方法可以访问'/0'后面的数据,因为它在内存中是存在的”
----只要内存中存在而且代码简洁即可,我不需要用Length.
 
后退
顶部