AnsiString的operator[]的使用?

WiseNeuro 2005-06-05 05:43:25
在c++ builder帮助中,operator []的声明为char& __fastcall operator [](const int idx);我现在想通过该运算符获取第i个字符,代码
AnsiString *s = new AnsiString() ;
*s = "AnsiString" ;
char *ch ;
i = 1 ;
ch = s[i] ; //说这里是将AnsiString 赋给char, 不知为什么?
if('c') == s[2]) //这里可以编译通过,但会出运行时错误,说不能将String转化为double型。
{

}

*s[i]更是不能用。请大家看看,该怎样使用该运算符?
...全文
229 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
myy 2005-06-06
  • 打赏
  • 举报
回复
AnsiString s("abcdefg") ;

// char ch=s[1]; //这样赋值也行,ch 为 'a'

if( 'c' == s[2] ) //注意:s[下标从1开始]
{
//可以执行到这里
}
WiseNeuro 2005-06-06
  • 打赏
  • 举报
回复
谢谢大家的热心帮助!
WiseNeuro 2005-06-06
  • 打赏
  • 举报
回复

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <iostream>
using namespace std ;
int main(int argc, char* argv[])
{ char ch ;
AnsiString *s = new AnsiString("AnsiString") ;
ch = (*s)[1] ;
cout << "(*s)[1]=" << (*s)[1] << endl ;
ch = s->c_str()[1] ;
cout << "s->c_str()[1]=" << s->c_str()[1] << endl ;
ch = s->operator[](1) ;
cout << "s->operator[](1)=" << s->operator[](1) << endl ;
if(ch == s->SubString(1,1))
{
cout << "equale" ;
}

cin.get(ch) ;
return 0;
}
//---------------------------------------------------------------------------
我用上面的代码测试了一下,ch = (*s)[i], ch = s->c_str()[i],ch = s->operator[](i)
都可以成功的将字符取出,而ch == s->SubString(1,1)是不可以的,虽然可以编译
通过,但由于SubString()(没有SubSr()函数)返回的是字符串,赋给ch时会溢出,出
内存错误,如果要比较,应该用 "string" == s->SubString(1,1)形式。
huabihan 2005-06-06
  • 打赏
  • 举报
回复
同意楼上,一般都用那个比较,看第几个字符是什么。
gxd305 2005-06-06
  • 打赏
  • 举报
回复
奇怪
AnsiString 怎么也这样用

比较字符串

AnsiString 有这么难么

比如
你想看
AnsiString s="AnsiString";
的第三个字符是否是's'
可以这样
if(s.SubStr(3,1)=='s')
{
/*-----------*/
}

僵哥 2005-06-05
  • 打赏
  • 举报
回复
AnsiString.c_str()[Index]就是这个
过客猫2022 2005-06-05
  • 打赏
  • 举报
回复
当然不能这样用啦,s是AnsiString指针,不是AnsiString对象,所以你的s[i]表示AnsiString数组第i个AnsiString串,所以你的ch=s[i]就会提示你将AnsiString指针赋给char *的错误!
你有两种使用方法:1 (*s)[i];, 2 s->operator[](i);
一般情况下,BCB下AnsiString对象实例是不需要new出来的,你当一般变量申明即可以使用如下
AnsiString s = "AnsiString";
char ch = s[3];
这样就可以了:)
还有呢,你把指针搞明白!我觉得你把指针搞错了!

13,826

社区成员

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

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