- 浏览: 66383 次
- 性别:
- 来自: 青岛
文章分类
最新评论
Ansistring 转 char
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "哈哈";
char *chr = Test.c_str();
}
char转Ansistring
代码:
#include
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString str = "Sample";
char chr[MAX_PATH];
strcpy( chr , str.c_str() );
}
Bool转AnsiString
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test=BoolToStr(CheckBox1->Checked);
}
Ansistring转bool
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{ AnsiString Test="-1"
CheckBox1->Checked= StrToBool( Test );
}
int转ansistring
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i = 123;
AnsiString str = IntToStr( i );
}
AnsiString转double
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "123";
long double d = StrToFloat( Test );
}
double转AnsiString
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double d = 123.456;
AnsiString str = FloatToStr( d );
}
double转AnsiString并四舍五入
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
long double d = 123.456121212;
AnsiString str = FloatToStrF( d , ffFixed ,5 , 4 );
//说明FloatTostrF里5代表从第几个数字的后一位开始四舍五入,4代表取4位小数。
//执行后得到str是123.4600。:roll:
}
double转AnsiString使用类似vb的format函数
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double d = 123.456;
AnsiString str = FormatFloat( "000000.00" , d );
}
//得到 000123.45,当然你可以使用"# . , ; E+ E- xx"等符号,你自己试试
AnsiString转Tclor型
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "0x00FF8080";
TColor Col = StringToColor( Test );
}
Tclor转AnsiString
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TColor Col = 0x00FF8080;
AnsiString str = ColorToString( Col );
}
消除AnsiString 中的一部分字符串
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
int First = 3; // 消除制定开头
int Length = 2; // 消除制定长度
AnsiString Dstr = Test.Delete( First , Length );
}//得到ABEF
在AnsiString 中插入字符串
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Ins = "12345"; // 插入串
int Pos = 3; // 在哪插
AnsiString Istr = Test.Insert( Ins , Pos );
//得到AB12345CDEF
}
取得ansi某一位字符
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Npos = Test[3];//得到C
}
取得AnsiString里最后一个字符
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
char *Lstr = Test.AnsiLastChar();//得到F
}
取出AnsiString字符,这个类似vb的mid函数!
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
int First = 3; // 3开始取
int Length = 2; // 取2位
AnsiString Getstr = Test.SubString( First , Length );
//得到CD
}
AnsiString的字母比较
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Sample = "abcdef";
int Result = Test.AnsiCompare( Sample );
返回1,不同!分大小写。
}
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Sample = "abcdef";
int Result = Test.AnsiCompareIC( Sample );
//返回0,相同!没有分大小写,哈哈
}
在AnsiString中寻找字符
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Sample = "E";
int Result = Test.Pos( Sample );
//返回5,如果你写Sample="haha",就返回0,找不到,哈哈
}
在AnsiString中找字符串,和上一个类似
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Sample = "EF";
int Result = Test.Pos( Sample );
//返回5,即E字符的位置
}
判断字符串长度,类似vb的len
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "拿金币来";
int Len = Test.Length();
//返回8
}
取得字符串,类似vb的left
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "小苹果然看了这篇文章";
AnsiString SLstr = Test.SetLength(6);
}//得到“小苹果”
检测双字节字串
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString ChkStr = "你好";
int ChkPos = 1 ;
if ( ByteType( ChkStr , ChkPos ) == mbSingleByte ){
Edit1->Text="0";
}
else{
Edit1->Text="1";
}//返回1,如果你写ChkStr="fxxk",就返回0
}
检测空字符串
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "";
bool chk = Test.IsEmpty();
if (chk )
Edit1->Text="1";//返回1
}
全部变小写vs全部变大写
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCdef";
AnsiString Lstr = Test.LowerCase();
}
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCdef";
AnsiString Ustr = Test.UpperCase();
}
类似vb中Trim 的去空格函数
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = " ABCDEF ";
AnsiString TLstr = Test.TrimLeft();
AnsiString TRstr = Test.TrimRight();
AnsiString Tstr = Test.Trim();
}
但是,这个处理不了全角的空格
代码:
AnsiString __fastcall TForm1::TrimStr( AnsiString Tm , AnsiString LR )
{
// LR … L:左除去 R:右除去 B:dou除去
int len;
// 左除去
if ( LR == "L" || LR == "B" ){
len = Tm.Length();
while ( Tm.SubString(1,1) == " " || Tm.SubString(1,2) == " "){
// 半角除去
if ( Tm.SubString(1,1) == " " ){
Tm = Tm.SubString(2,len);
len = Tm.Length();
}
// 全角除去
else if ( Tm.SubString(1,2) == " " ){
Tm = Tm.SubString(3,len);
len = Tm.Length();
}
}
}
// 右除去
if ( LR == "R" || LR == "B" ){
len = Tm.Length();
while ( Tm.SubString(len,1) == " " || Tm.SubString(len-1,2) == " " ){
// 半角除去
if ( Tm.SubString(len,1) == " " ){
len = Tm.Length();
Tm = Tm.SubString(1,len-1);
len = Tm.Length();
}
// 全角除去
else if ( Tm.SubString(len-1,2) == " " ){
len = Tm.Length();
Tm = Tm.SubString(1,len-2);
len = Tm.Length();
}
}
}
return Tm;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = " 拳脚 ";
AnsiString Ret = TrimStr(Test,"B")
}
相同字符重复输入
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Soc = AnsiString::StringOfChar( '*' , 100 );
Edit1->Text=Soc ;//显示100个*
}
字符串替换
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Str = "Borland C++ Builder is free";
AnsiString From = "C++ Builder";
AnsiString To = "Delphi";
AnsiString Result;
Result = StringReplace( Str, From, To, TReplaceFlags() <<
rfReplaceAll << rfIgnoreCase );
//<<后是参数,得到Borland Delphi is free
}
全角变半角
代码:
AnsiString Zen = "1234567890";
int Len = Zen.Length();
char buf[MAX_PATH];
ZeroMemory( buf, sizeof( buf ) );
LCMapString( GetUserDefaultLCID(), LCMAP_HALFWIDTH, Zen.c_str(), Len, buf, sizeof( buf ) );
AnsiString Han = AnsiString( buf );
Edit1->Text=Han;
半角变全角
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Han = "1234567890";
int Len = Han.Length();
char buf[MAX_PATH];
ZeroMemory( buf, sizeof( buf ) );
LCMapString( GetUserDefaultLCID(), LCMAP_FULLWIDTH, Han.c_str(), Len, buf, sizeof( buf ) );
AnsiString Zen = AnsiString( buf );
}
AnsiString重载了“[]”运算符,可以将内容当做字符数组一样操作,不过和char[]不同的是AnsiString的[]运算符的下标是从1开始的,和Delphi的String 兼容。对于长度不大的AnsiString可以直接使用[]来操作,长度大的时候最好转换成char*在使用,因为重载是通过成员函数实现的,增加了系统的调用开销。
如:
代码:
AnsiString Temp = "这是一个测试的AnsiString";
int Length = Temp.Length();
for(int i = 1; i <= Length;i++)
{
if(Temp[i] > 128)
{
//........
//筛选其中的汉字;
i++;
}
else
{
//......非汉字的字符。
}
}
对于长度小的AnsiString不必要使用c_str()转换成C的字符串来操作。
AnsiString的构造函数有一下几种:
代码:
__fastcall AnsiString();
__fastcall AnsiString(const char* src);
__fastcall AnsiString(const AnsiString& src);
__fastcall AnsiString(const char* src, unsigned char len);
__fastcall AnsiString(const wchar_t* src);
__fastcall AnsiString(int src);
__fastcall AnsiString(double src);
__fastcall AnsiString(char src);
__fastcall AnsiString(short);
__fastcall AnsiString(unsigned short);
__fastcall AnsiString(unsigned int);
__fastcall AnsiString(long);
__fastcall AnsiString(unsigned long);
__fastcall AnsiString(__int64);
__fastcall AnsiString(unsigned __int64);
__fastcall AnsiString(const WideString &src);
第一个是缺省构造函数,就是生命一个AnsiString的时候使用的,比如
代码:
AnsiString Str1;
第二个是将字符串常量或者字符数组或者字符指针转换成AnsiString的构造函数,他是根据C字符串的规则进行构造,即以第一个遇到的'/0'字符作为结束字符的。常见的应用是
代码:
AnsiString Str2 = "TestString";
第三个是标准的拷贝构造函数,当执行一个赋值操作的时候实际上就是使用了这个构造函数。
第四个是指定了长度和源的构造函数,他和第二个不同的是,不是以'/0'字符作为结束字符的,而是按照指定的长度为准,这个构造函数可以突破C语言中字符串的限制和不足,可能在实际中更具使用价值,大多数的API返回的都是char*,但并不一定都是可视的字符,也可能包含了'/0',就可以使用这个构造函数来实现对内容的拷贝,尽管第二个参数是unisgned char类型,但是实际中使用好像可以突破256的限制,在一定意义上将这个构造函数可以是我们在使用BCB的时候避免使用new来分配char类型的数组数据,在一个局部的应用中,使用AnsiString保存临时的char数组数据,不需要考虑在什么异常的情况下需要释放内存,因为超出作用域的时候,AnsiString是可以自己释放的。
第五个构造函数可以是的AnsiString可以直接和wchar_t*进行转换,就是可以直接将w_chart*使用=赋值给AnsiString类型。
第六个是将整型转换为字符串的构造函数,也就是可以直接将一个int类型的值赋给AnsiString,其结果和通过IntToStr赋值一样的。
如:
代码:
int Temp = 46573284;
AnsiString Str3 = IntToStr(Temp); 和
AnsiString Str4 = Temp;
结果是一样的。
第七个至第十五个和第六个类似,作用也相当。
第十六个是将Windows的WideString转换为AnsiString的构造函数,也就是可以直接将WideString赋值给AnsiString,而不需要使用其他的方法或者API进行转换,功能和AnsiString(wchar_t*)类似。
String和string是不同的,string是标准从c++支持的处理字符串的类,在c++里我们经常这样使用string
代码:
cout<
但我们不能直接把String像这样使用,但String其实重载了<<这个操作符,如果要这样使用我们必须在头部加入:
#define VCL_IOSTREAM
这样我们可以这样了:
代码:
String str="hello world";
cout<
同理,我们还可以这样:
代码:
String str;
cin>>str;
在使用stl的时候,我们经常需要string,但String没有提供直接转换为string的方法,但我们可以这样:
代码:
//---------------------------------------------------------------------------
#pragma hdrstop
#include
#include
#define VCL_IOSTREAM
#include
//---------------------------------------------------------------------------
using namespace std;
#pragma argsused
int main(int argc, char* argv[])
{
String str="hello world";
string ss(str.c_str());
cout< system("pause");
return 0;
}
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "哈哈";
char *chr = Test.c_str();
}
char转Ansistring
代码:
#include
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString str = "Sample";
char chr[MAX_PATH];
strcpy( chr , str.c_str() );
}
Bool转AnsiString
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test=BoolToStr(CheckBox1->Checked);
}
Ansistring转bool
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{ AnsiString Test="-1"
CheckBox1->Checked= StrToBool( Test );
}
int转ansistring
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i = 123;
AnsiString str = IntToStr( i );
}
AnsiString转double
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "123";
long double d = StrToFloat( Test );
}
double转AnsiString
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double d = 123.456;
AnsiString str = FloatToStr( d );
}
double转AnsiString并四舍五入
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
long double d = 123.456121212;
AnsiString str = FloatToStrF( d , ffFixed ,5 , 4 );
//说明FloatTostrF里5代表从第几个数字的后一位开始四舍五入,4代表取4位小数。
//执行后得到str是123.4600。:roll:
}
double转AnsiString使用类似vb的format函数
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double d = 123.456;
AnsiString str = FormatFloat( "000000.00" , d );
}
//得到 000123.45,当然你可以使用"# . , ; E+ E- xx"等符号,你自己试试
AnsiString转Tclor型
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "0x00FF8080";
TColor Col = StringToColor( Test );
}
Tclor转AnsiString
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TColor Col = 0x00FF8080;
AnsiString str = ColorToString( Col );
}
消除AnsiString 中的一部分字符串
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
int First = 3; // 消除制定开头
int Length = 2; // 消除制定长度
AnsiString Dstr = Test.Delete( First , Length );
}//得到ABEF
在AnsiString 中插入字符串
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Ins = "12345"; // 插入串
int Pos = 3; // 在哪插
AnsiString Istr = Test.Insert( Ins , Pos );
//得到AB12345CDEF
}
取得ansi某一位字符
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Npos = Test[3];//得到C
}
取得AnsiString里最后一个字符
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
char *Lstr = Test.AnsiLastChar();//得到F
}
取出AnsiString字符,这个类似vb的mid函数!
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
int First = 3; // 3开始取
int Length = 2; // 取2位
AnsiString Getstr = Test.SubString( First , Length );
//得到CD
}
AnsiString的字母比较
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Sample = "abcdef";
int Result = Test.AnsiCompare( Sample );
返回1,不同!分大小写。
}
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Sample = "abcdef";
int Result = Test.AnsiCompareIC( Sample );
//返回0,相同!没有分大小写,哈哈
}
在AnsiString中寻找字符
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Sample = "E";
int Result = Test.Pos( Sample );
//返回5,如果你写Sample="haha",就返回0,找不到,哈哈
}
在AnsiString中找字符串,和上一个类似
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCDEF";
AnsiString Sample = "EF";
int Result = Test.Pos( Sample );
//返回5,即E字符的位置
}
判断字符串长度,类似vb的len
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "拿金币来";
int Len = Test.Length();
//返回8
}
取得字符串,类似vb的left
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "小苹果然看了这篇文章";
AnsiString SLstr = Test.SetLength(6);
}//得到“小苹果”
检测双字节字串
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString ChkStr = "你好";
int ChkPos = 1 ;
if ( ByteType( ChkStr , ChkPos ) == mbSingleByte ){
Edit1->Text="0";
}
else{
Edit1->Text="1";
}//返回1,如果你写ChkStr="fxxk",就返回0
}
检测空字符串
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "";
bool chk = Test.IsEmpty();
if (chk )
Edit1->Text="1";//返回1
}
全部变小写vs全部变大写
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCdef";
AnsiString Lstr = Test.LowerCase();
}
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = "ABCdef";
AnsiString Ustr = Test.UpperCase();
}
类似vb中Trim 的去空格函数
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = " ABCDEF ";
AnsiString TLstr = Test.TrimLeft();
AnsiString TRstr = Test.TrimRight();
AnsiString Tstr = Test.Trim();
}
但是,这个处理不了全角的空格
代码:
AnsiString __fastcall TForm1::TrimStr( AnsiString Tm , AnsiString LR )
{
// LR … L:左除去 R:右除去 B:dou除去
int len;
// 左除去
if ( LR == "L" || LR == "B" ){
len = Tm.Length();
while ( Tm.SubString(1,1) == " " || Tm.SubString(1,2) == " "){
// 半角除去
if ( Tm.SubString(1,1) == " " ){
Tm = Tm.SubString(2,len);
len = Tm.Length();
}
// 全角除去
else if ( Tm.SubString(1,2) == " " ){
Tm = Tm.SubString(3,len);
len = Tm.Length();
}
}
}
// 右除去
if ( LR == "R" || LR == "B" ){
len = Tm.Length();
while ( Tm.SubString(len,1) == " " || Tm.SubString(len-1,2) == " " ){
// 半角除去
if ( Tm.SubString(len,1) == " " ){
len = Tm.Length();
Tm = Tm.SubString(1,len-1);
len = Tm.Length();
}
// 全角除去
else if ( Tm.SubString(len-1,2) == " " ){
len = Tm.Length();
Tm = Tm.SubString(1,len-2);
len = Tm.Length();
}
}
}
return Tm;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Test = " 拳脚 ";
AnsiString Ret = TrimStr(Test,"B")
}
相同字符重复输入
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Soc = AnsiString::StringOfChar( '*' , 100 );
Edit1->Text=Soc ;//显示100个*
}
字符串替换
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Str = "Borland C++ Builder is free";
AnsiString From = "C++ Builder";
AnsiString To = "Delphi";
AnsiString Result;
Result = StringReplace( Str, From, To, TReplaceFlags() <<
rfReplaceAll << rfIgnoreCase );
//<<后是参数,得到Borland Delphi is free
}
全角变半角
代码:
AnsiString Zen = "1234567890";
int Len = Zen.Length();
char buf[MAX_PATH];
ZeroMemory( buf, sizeof( buf ) );
LCMapString( GetUserDefaultLCID(), LCMAP_HALFWIDTH, Zen.c_str(), Len, buf, sizeof( buf ) );
AnsiString Han = AnsiString( buf );
Edit1->Text=Han;
半角变全角
代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Han = "1234567890";
int Len = Han.Length();
char buf[MAX_PATH];
ZeroMemory( buf, sizeof( buf ) );
LCMapString( GetUserDefaultLCID(), LCMAP_FULLWIDTH, Han.c_str(), Len, buf, sizeof( buf ) );
AnsiString Zen = AnsiString( buf );
}
AnsiString重载了“[]”运算符,可以将内容当做字符数组一样操作,不过和char[]不同的是AnsiString的[]运算符的下标是从1开始的,和Delphi的String 兼容。对于长度不大的AnsiString可以直接使用[]来操作,长度大的时候最好转换成char*在使用,因为重载是通过成员函数实现的,增加了系统的调用开销。
如:
代码:
AnsiString Temp = "这是一个测试的AnsiString";
int Length = Temp.Length();
for(int i = 1; i <= Length;i++)
{
if(Temp[i] > 128)
{
//........
//筛选其中的汉字;
i++;
}
else
{
//......非汉字的字符。
}
}
对于长度小的AnsiString不必要使用c_str()转换成C的字符串来操作。
AnsiString的构造函数有一下几种:
代码:
__fastcall AnsiString();
__fastcall AnsiString(const char* src);
__fastcall AnsiString(const AnsiString& src);
__fastcall AnsiString(const char* src, unsigned char len);
__fastcall AnsiString(const wchar_t* src);
__fastcall AnsiString(int src);
__fastcall AnsiString(double src);
__fastcall AnsiString(char src);
__fastcall AnsiString(short);
__fastcall AnsiString(unsigned short);
__fastcall AnsiString(unsigned int);
__fastcall AnsiString(long);
__fastcall AnsiString(unsigned long);
__fastcall AnsiString(__int64);
__fastcall AnsiString(unsigned __int64);
__fastcall AnsiString(const WideString &src);
第一个是缺省构造函数,就是生命一个AnsiString的时候使用的,比如
代码:
AnsiString Str1;
第二个是将字符串常量或者字符数组或者字符指针转换成AnsiString的构造函数,他是根据C字符串的规则进行构造,即以第一个遇到的'/0'字符作为结束字符的。常见的应用是
代码:
AnsiString Str2 = "TestString";
第三个是标准的拷贝构造函数,当执行一个赋值操作的时候实际上就是使用了这个构造函数。
第四个是指定了长度和源的构造函数,他和第二个不同的是,不是以'/0'字符作为结束字符的,而是按照指定的长度为准,这个构造函数可以突破C语言中字符串的限制和不足,可能在实际中更具使用价值,大多数的API返回的都是char*,但并不一定都是可视的字符,也可能包含了'/0',就可以使用这个构造函数来实现对内容的拷贝,尽管第二个参数是unisgned char类型,但是实际中使用好像可以突破256的限制,在一定意义上将这个构造函数可以是我们在使用BCB的时候避免使用new来分配char类型的数组数据,在一个局部的应用中,使用AnsiString保存临时的char数组数据,不需要考虑在什么异常的情况下需要释放内存,因为超出作用域的时候,AnsiString是可以自己释放的。
第五个构造函数可以是的AnsiString可以直接和wchar_t*进行转换,就是可以直接将w_chart*使用=赋值给AnsiString类型。
第六个是将整型转换为字符串的构造函数,也就是可以直接将一个int类型的值赋给AnsiString,其结果和通过IntToStr赋值一样的。
如:
代码:
int Temp = 46573284;
AnsiString Str3 = IntToStr(Temp); 和
AnsiString Str4 = Temp;
结果是一样的。
第七个至第十五个和第六个类似,作用也相当。
第十六个是将Windows的WideString转换为AnsiString的构造函数,也就是可以直接将WideString赋值给AnsiString,而不需要使用其他的方法或者API进行转换,功能和AnsiString(wchar_t*)类似。
String和string是不同的,string是标准从c++支持的处理字符串的类,在c++里我们经常这样使用string
代码:
cout<
但我们不能直接把String像这样使用,但String其实重载了<<这个操作符,如果要这样使用我们必须在头部加入:
#define VCL_IOSTREAM
这样我们可以这样了:
代码:
String str="hello world";
cout<
同理,我们还可以这样:
代码:
String str;
cin>>str;
在使用stl的时候,我们经常需要string,但String没有提供直接转换为string的方法,但我们可以这样:
代码:
//---------------------------------------------------------------------------
#pragma hdrstop
#include
#include
#define VCL_IOSTREAM
#include
//---------------------------------------------------------------------------
using namespace std;
#pragma argsused
int main(int argc, char* argv[])
{
String str="hello world";
string ss(str.c_str());
cout< system("pause");
return 0;
}
发表评论
-
tms安装
2011-10-08 14:43 2151上次写的怎么没有了呢? ------------------ ... -
bcb 转换
2011-07-29 17:32 858//如果文件已经存在 则修改为可写 -m char* ... -
Stack around the variable was corrupted现象解析
2011-07-25 17:07 1115奇怪的Stack around the variable wa ... -
bcb打包与运行
2011-07-22 14:27 630bcb打包的时候 点掉 build with runtime ... -
C++ ABC(2)
2011-07-21 10:35 648关键字列表 asm do if return typedef ...
相关推荐
`StringToColor`函数可以将表示颜色的十六进制AnsiString转换为Delphi的颜色类型TColor,用于图形界面元素的颜色设定。 #### TColor到AnsiString ```cpp TColor Col = 0x00FF8080; AnsiString str = ColorToString...
同时,AnsiString 也可以与其他数据类型进行转换,例如将 AnsiString 转换为整数、浮点数、字符数组等。 下面是 AnsiString 的一些常用方法和转换方式: 1. AnsiString 转 char 代码: void __fastcall TForm1::...
在描述中提到的“delphi 开发的UTF8 ansistring转换动态库”是一个由DELPHI编写的DLL文件,名为UTF8_DLL.dll。DLL文件允许其他应用程序通过接口调用来执行特定的功能,这里的功能是进行UTF8和ANSI String之间的转换...
// 使用c_str()将AnsiString转换为C风格字符串 } ``` 这里通过`c_str()`函数将`AnsiString`对象转换成C风格的字符串`char*`。需要注意的是,C风格字符串的长度必须足够大,以避免内存溢出。 #### C风格字符串转...
转换过程中,需要先将ANSIString转换为UnicodeString(Unicode编码的字符串类型),再利用类似WideCharToMultiByte的API将Unicode字符串编码为UTF8字节流,最后将字节流写入文件。 动态链接库(DLL)提供了一种共享...
1. **UTF8到AnsiString转换**:此功能允许将UTF8编码的字符串转换为AnsiString,以便在不支持UTF8的旧代码或系统中使用。转换过程需要考虑到目标系统的ANSI编码,确保转换后的字符串能正确显示。 2. **AnsiString到...
`AnsiString` 支持多种类型转换,如从 `char`、`char*`、`int`、`double` 等类型转换到 `AnsiString`。这些转换可以通过构造函数或转换运算符完成。 ```cpp // 从 int 转换 AnsiString intString = 49; // 从 ...
AnsiString与基本数据类型的转换非常便捷,C++Builder提供了如`StrToInt()`、`StrToFloat()`等函数,方便将AnsiString转换为整数、浮点数等。 3-3. 常用类类型 C++Builder中的类类型主要是VCL组件,它们封装了许多...
例如,从AnsiString转换到UnicodeString时,需要知道原始字符串的编码,反之亦然。 在“字符串与Unicode互转工具”中,可能包含以下功能: 1. 字符串到Unicode:将普通字符串(可能是AnsiString)按照特定的编码...
例如,可以将 AnsiString 转换为 PChar 类型,然后传递给需要 PChar 参数的 API 函数。但是,需要注意的是,调用完 API 函数后,可能需要手动调整字符串长度,确保以 null 结束,这时可以使用 STRUTILS 单元中的 ...
1. **编码转换**:将AnsiString转换为UnicodeString或WideString,反之亦然,确保在不同编码系统之间进行数据交换时不会丢失信息。 2. **字符集检测**:检测字符串所使用的字符集,这对于处理未知来源的文本非常有用...
3. **大小写转换** (`AnsiString LowerCase()` & `AnsiString UpperCase()`): 将`AnsiString`中的所有字符转换为小写或大写。 4. **设置长度** (`AnsiString& SetLength(int newLength)`): 调整`AnsiString`的长度...
在传输过程中,需要将Delphi的AnsiString转换为C#的UTF-8编码的字符串,反之亦然。同时,密钥和初始化向量也需要在两种语言间进行适当的类型转换。 在提供的压缩包文件中,应包含了Delphi和C#的源代码,以及可能的...
这里用到了`ToDouble()`函数,它可以将AnsiString转换为double类型。如果转换过程中发生异常(例如,输入的字符串不能转化为有效的数字),我们会捕获这个异常,并将`Key`值设为0,从而阻止非法字符的输入。这部分...
7. **字符串类型转换问题**:"Delphi XE2 里面string 与 ansistring 转换导致kbmMW 的一个bug"这篇文档,揭示了在特定Delphi版本中可能出现的字符串类型转换问题及其对kbmMW的影响,以及如何避免或解决这类问题。...
在Delphi中,从Delphi 7开始,默认的字符串类型已经从原来的AnsiString转换为UnicodeString,这意味着默认情况下,Delphi能够很好地处理中文字符。 1. **编码与解码**:在Delphi中,处理中文字符时,你可能需要进行...
如果你有一个`Char`类型的数组`C`,并且想要将其转换为`PAnsiChar`,你可以直接将`AnsiString`类型转换应用到`Char`数组上,如以下代码所示: ```delphi Var C: array[0..100] of Char; Begin PAnsiChar...
6. **字符串转换函数**:在Delphi中,可以使用`WideString`到`AnsiString`的转换函数,如`Ansistring(WideString)`,或者使用`System.SysUtils`单元中的`UTF8ToAnsi`和`AnsiToUTF8`函数进行编码转换。 7. **平台...
在C++Builder编程环境中,处理字符串格式转换是常见的任务,特别是在与不同的编码标准如Unicode、UTF-8和ANSI打交道时。本压缩包文件“C++Builder String, UNICODE, UTF8, ANSI互转的类.rar_c”提供了一个专门用于...