CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

怎样将ansistring类型转换成LPCSTR?

楼主hslyw()2003-05-01 19:24:57 在 C++ Builder / 基础类 提问

LPCSTR的定义是const   char   *,怎样将一个ansistring值转换成这种类型?  
  我试了strcpy(aa,bb.c_str()),提示说不能将一个const   char   *转换成char   *,  
  请大家帮助! 问题点数:20、回复次数:13Top

1 楼kataboy(老公)回复于 2003-05-01 19:29:56 得分 0

你试试用TVariant转换一下。Top

2 楼lilachue(静水思雅)回复于 2003-05-01 19:38:33 得分 0

try:  
          const   char   *p   ;  
          AnsiString   str   ;  
          p   =   str.c_**()   ;//*:通配符  
          这是一个子函数,具体名称我记不得了,自己试试!Top

3 楼PPower(月亮光光,照地堂)回复于 2003-05-01 19:41:21 得分 20

AnsiString   str   =   "";  
  LPCSTR   pConst   ;  
  char   *   p   =   const_cast<char   *>(pConst);  
  strcpy(p,   str.c_str());  
  //既然定義成為const的,那就是說不能改變其內容的,最好別這樣做。Top

4 楼hslyw()回复于 2003-05-01 19:51:23 得分 0

到现在还没有搞定,请大家继续提供帮助Top

5 楼qibo999(行路者)回复于 2003-05-02 10:51:57 得分 0

应该就是bb.c_str()啊?要不就不要用变量:const   AnsiString   bb="abcdefg";LPCSTR   aa;  
  strcpy(aa,   bb.c_str());  
  Top

6 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2003-05-02 13:17:23 得分 0

AnsiString   s="asasa";  
  LPCSTR   aa=(LPCSTR)s.c_str();  
  Top

7 楼PPower(月亮光光,照地堂)回复于 2003-05-02 13:35:42 得分 0

直接寫就行了呀:  
  AnsiString   s="asasa";  
  LPCSTR   aa   =   s.c_str();  
   
  把char   *的值賦給一個const   char   *是合法的。  
  但是你要注意的是編譯能通過,運行不一定正常。  
  因為:假如你在寫  
  LPCSTR   aa   ;  
  aa   =   Edit1->Text.c_str();  
  Edit2->Text   =   aa   ;   //不好意思,編譯沒問題,可是結果卻不是你所想的。  
   
  應該這樣寫:  
  AnsiString   str   =   Edit1->Text   ;  
  aa   =   str.c_str();  
  Edit2->Text   =   aa   ;   //這回結果正確了。  
  其原因是:Edit1->Text.c_str()返回的是個臨時變量,Text是TEdit類的一個屬性,並不是一個數據成員,屬性有可能是用函數實現的,這就出現了這種情況。  
   
  有關這方面的討論很多,可查看一下以前的貼子。但如果看BCB的幫助,我認為更好。Top

8 楼myy()回复于 2003-05-02 14:14:26 得分 0

这样也不好的:  
   
  AnsiString   str   =   Edit1->Text   ;  
  aa   =   str.c_str();     //!!不要保存AnsiString.c_str()的值,容易出错的!!!  
  Edit2->Text   =   aa   ;   //這回結果正確了。  
   
   
  AnsiString.c_str()的值应该直接用,不应保存,因为它会变。比如:  
   
  AnsiString   s="hfhfhf";  
  char   *p=s.c_str();  
  s="saxasxsaxasxsmslkamkamdxlsdakmxlasmxmaslmxlasmxlasmxlmsamxalskmx";  
  //用p.....  
   
  //因为s内部可能重新分配了内存,这时s.c_str()就已经与p不再相等了!p成了野指针!  
  //你实验时,可能不会出错(可以把s重新赋很长的串,这样出错机会更大)  
  Top

9 楼shadowstar(CodeFast for Delphi & C++Builder)回复于 2003-05-02 14:21:12 得分 0

这个问题不是很简单么?   强制转化一下就可以了啊!   不知道楼主是什么意思?  
   
  AnsiString   bb   =   "asasa";  
  LPCSTR   aa   =   new   char[256];  
   
  strcpy(const_cast<char*>(aa),   bb.c_str());  
  Top

10 楼PPower(月亮光光,照地堂)回复于 2003-05-02 17:08:22 得分 0

當我要用指針操作字符串時,確實是這麼寫代碼的,因為有時AnsiString提供的函數解決不了問題。  
  AnsiString   str   =   Edit1->Text   ;  
  aa   =   str.c_str();     //!!不要保存AnsiString.c_str()的值,容易出错的!!!  
  Edit2->Text   =   aa   ;   //這回結果正確了。  
   
  myy     也指出了這樣寫隱藏的錯誤,可是不這樣寫就只有作一個STRCOPY,只是不想做這個動作,沒必要。為了讓程序看起來是可靠點,可以這樣寫:  
   
  AnsiString   str   =   Edit1->Text   ;  
  {//用個{}號把代碼括起來,是要屏蔽{}裡面定義的局部變量。  
    char   *aa   =   str.c_str();     //  
    ...//這裡是指針操作,在這段代碼中要保證不對str進行任何賦值動作,否則就是錯的。  
    Edit2->Text   =   aa   ;   //這回結果正確了。  
  }  
  //移出{}代碼塊後,char   *aa   無法使用,野指針的問題也就不存在了,這樣做只是為了那麼一點效率,str的內容可以用char   *高效地修改。是否要這樣用,自己看著辦吧,使用指針不小心就會出錯的。  
   
   
  Top

11 楼teatool(美貌与智慧并重,英雄与侠义的化身)回复于 2003-05-02 17:37:44 得分 0

.c_str();Top

12 楼ThinkX(秋天的树)回复于 2003-05-02 17:57:09 得分 0

 
  这种做法没有问题,编译通过  
  AnsiString   ss   =   "ddddddaaaa";  
  char   ds[100];  
  strcpy(ds,   ss.c_str());  
   
  其实c_str()返回的是char*而不是const   char*。Top

13 楼hslyw()回复于 2003-05-03 17:18:13 得分 0

最后是这样解决的:  
   
  char   *p=new   char[bb.length[]+1];  
  strcpy(p,bb.c_str());  
  aa=p;  
   
  使用了一个指针进行过度。  
  多谢大家的回复。  
  Top

相关问题

  • 类型转换:LPCSTR到LPTSTR
  • 怎样将AnsiString类型转换成wchar_t类型?
  • 关于 AnsiString 类型到 wchar_t * 类型的转换
  • AnsiString类型要如何才能转换成TVariantInParam类型?
  • 各位大虾:怎样将AnsiString 类型转换成char *
  • 怎样将AnsiString or char * 的类型转换成wchar_t型
  • C++BUILDER 中CHAR ,STRING ,ANSISTRING,WIDESTRING 4 种类型怎样转换?
  • 快来抢分:怎样把 “unsigned char *”转换成“AnsiString”类型?
  • 请各位大虾帮忙“LPCSTR与char *类型转换”,多谢
  • 如何把Char或AnsiString转换诚wchar_t类型

关键词

  • 转换
  • ansistring
  • lpcstr
  • aa
  • 問題
  • asasa
  • str
  • 結果
  • edit
  • 出错

得分解答快速导航

  • 帖主:hslyw
  • PPower

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo