关于string转化char*的问题。

zdrone 2009-04-06 10:15:15
c++ 标准库的string 类 如果需要获得c格式的串是使用 string str;str.c_str()来定义的。

但是这个东西出来是const char*的类型。如果直接(char*)str.c_str()的话会破坏类内部维护。

如果自己定义的函数可以使用string&类型来传递参数。但是某些系统函数使用char*来传递。而且函数内部也确实需要对指针进行重新操作。

如果这时候为了程序代码统一 ,能不能用string类型来做?如果CString的话简单,直接GetBuffer就可以了。


试了下const_cast<char*>来转换,直接提示不支持。 应该怎么写才好?
...全文
727 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hylove9494 2009-04-06
  • 打赏
  • 举报
回复
sf
ZXW0521 2009-04-06
  • 打赏
  • 举报
回复
看来,都是c_str()的变种,
jakqigle 2009-04-06
  • 打赏
  • 举报
回复
string str("$$$$$");
const chat *pstr = str.c_str();
sadsea_yang 2009-04-06
  • 打赏
  • 举报
回复
LS两位的方法不错~
受教了
Sco_field 2009-04-06
  • 打赏
  • 举报
回复
靠,破网络!
Sco_field 2009-04-06
  • 打赏
  • 举报
回复

#include <iostream>
#include <string.h>
using namespace std;

void fun(char* pch)
{
cout << pch << endl;
}
int main()
{
string str = "hello";
char *pch = const_cast<char*>(str.c_str());//你报错是因为这里写的不对吧?
fun(pch);

getchar();
return 0;
}
没问题的。
Sco_field 2009-04-06
  • 打赏
  • 举报
回复

#include <iostream>
#include <string.h>
using namespace std;

void fun(char* pch)
{
cout << pch << endl;
}
int main()
{
string str = "hello";
char *pch = const_cast<char*>(str.c_str());
fun(pch);

getchar();
return 0;
}

没问题的。
Sco_field 2009-04-06
  • 打赏
  • 举报
回复

#include <iostream>
#include <string.h>
using namespace std;

void fun(char* pch)
{
cout << pch << endl;
}
int main()
{
string str = "hello";
char *pch = const_cast<char*>(str.c_str());
fun(pch);

getchar();
return 0;
}

没问题的。
黄志义 2009-04-06
  • 打赏
  • 举报
回复
实在不行的话 可以拷贝出来使用啊

int lilen = str.length()+1;
char* pszTemp = new char[lilen];
memset(pszTemp, 0, lilen);
memcpy(pszTemp, str.c_str(), lilen-1);
  • 打赏
  • 举报
回复
用一个char *型来接收str.c_str()的副本不是很好吗.
string本身就是类,别期望用指针操作它.

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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