vb中我提的一个弱智问题,急急急急急~!!!!!

Tycoon_21st 2005-09-11 12:48:24
dim str1 as string * 255
dim str2 as string
str1 ="this is a string"


我如何只得到str1的字符串值,将"this is a string"赋值给str2,不是地址,是内容。
请问高手们如何编写。
谢谢!
...全文
271 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fct0906 2005-09-12
  • 打赏
  • 举报
回复
我不太熟悉vb,插一下话。看来vb内部是采用了所谓的COW(copy on write)技术。比如两个string对象str1, str2,当一个给另一个赋值时 str2 = str1,这个时候两个对象其实是共享同一片内存空间的,可以这么理解,str1和str2里面都包含这样一个指针成员,指向同一个地址。但是如果把其中任何一个对象改动的话,如str1被赋了一个新值,这个时候str2的内容却没有受到影响。
大致描述就是这个样子的,vb把一些复杂性都封装在语言层里面了,使用者很方便的。但如果想对这些技术有更深的了解的话,可能要用C/C++语言就清楚了。
VBDN 2005-09-11
  • 打赏
  • 举报
回复
Dim str1 As String * 255
Dim str2 As String
str1 = "this is a string"
str2 = Trim(str1)
str2 = str2 & "add string"
Debug.Print str2 '输出结果为 this is a stringadd string
Tycoon_21st 2005-09-11
  • 打赏
  • 举报
回复
str2 = Trim(str1)
这样的话,str2 = str2 & "add string",结果我能得到str2的值还是="this is a string"

province_(雍昊) 仁兄问得很对,事实上str1和str2内容是一样的,但地址不一样,即使改变了str1也不会改变str2
province_ 2005-09-11
  • 打赏
  • 举报
回复
str2=str1不就是把内容给STR2了吗?如果是传递地址的话,你改了任何一个的内容那另一个的内容也就变了,在VB里你见过这种现象吗(参数除外)?
pasl 2005-09-11
  • 打赏
  • 举报
回复
str2 = str2 & "add string",结果我能得到str2的值还是="this is a string"

那是因为在str2中:从="this is a string"后面的一个字节后面到位置255都是chr(0)再接着才是"add string",你显示出来时,chr(0)被看成字符的终止符,所以你看到的str2还是"this is a string"

bluesky23 2005-09-11
  • 打赏
  • 举报
回复
楼主是不是刚刚从C语言转过来的?
luojianbo 2005-09-11
  • 打赏
  • 举报
回复
取的是str1里的值的话,那么你可以先取值----str2 = Trim(str1)
然后可以改变str1这样str1和str2的值就可以不一样了
VBDN 2005-09-11
  • 打赏
  • 举报
回复
str2 = Trim(str1)
threenewbee 2005-09-11
  • 打赏
  • 举报
回复
不存在这个问题,因为这是两个对象

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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