送分问题!!!关于变量类型的转换。。。

Yea 2003-08-22 12:05:18
char *w;
a=FileOpen("d:\\index.sss",fmOpenReadWrite);
w=new char[30];
FileRead(a,w,30);
for(j=1;w.SubString(j,1)!="*";j++)//就在这里遇见问题了。
.......
怎么把w转换为AnsiString型?我用AnsiSring(w)不行。
...全文
44 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
binbin 2003-08-22
  • 打赏
  • 举报
回复
在读入数据到w后,用AnsiString tmp=w;就可以了.
不过这里的低级文件操作需要作一些错误处理再继续进行吧,否则你都不知道文件是否成功打开,或者是否读到文件结束了.
另外从效率出发,你完全可以以数组的方式直接处理,为什么要转化为AnsiString呢?
qibo999 2003-08-22
  • 打赏
  • 举报
回复
哦,这么快就过期了,应该是ljianq() 的结构比较清晰。
qibo999 2003-08-22
  • 打赏
  • 举报
回复
缓冲区应该多定义一位:
char *w = new char[31];

要转化到String,必须以"\0"结尾。楼上的结构比较清晰。
gyj_china 2003-08-22
  • 打赏
  • 举报
回复
问题不是出在这句AnsiString(w);而是下面这条语句

for(j=1;w.SubString(j,1)!="*";j++)
改成while(w[j++]!='*')
myredsun 2003-08-22
  • 打赏
  • 举报
回复
转换只要直接付值就可以了,另外如果遍历的话应该直接使用w[i]这样的形式。
ljianq 2003-08-22
  • 打赏
  • 举报
回复
for(int i =0; i<30;i++) {
if(w[i] !='*')
break;
else
//do something
}
zjqyb 2003-08-22
  • 打赏
  • 举报
回复
ct=FileRead(a,w,30);
W最后有没有添0
w[ct]='\0';
添0 后才能转成AnsiString;
index.sss若不是text文件,w不可能转成AnsiString;
Friecin 2003-08-22
  • 打赏
  • 举报
回复
如果你要遍例w可以这样:

for(int i =0; i<30;i++)
if(w[i] == '*')
do something....
Friecin 2003-08-22
  • 打赏
  • 举报
回复
for(j=1;w.SubString(j,1)!="*";j++)
这句话本来就有问题;

w是字符类型数组,substring()是针对AnsiString类型的;
w.SubString(j,1)!="*"返回的bool值更是错上加错,

你想解决什么问题?

13,822

社区成员

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

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