作者godman362 (Shizuru)
看板C_and_CPP
标题[问题] const char * 和 std::string
时间Tue Mar 31 18:20:33 2009
想请教一下这两个之间的差异
因为在我以前所学过的印象
string = const char *
但是实际上使用却又不是那麽一回事
想再请问,这两个之间有办法作转换的动作吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.64.183.215
1F:推 gba356:char* 的字串叫做 C-style string, C++ STL 内的 string 03/31 18:27
2F:→ gba356:又是另一个东西了。两者可以转换,请看这里: 03/31 18:27
4F:→ windincloud:string str; char* a=str.c_str(); 03/31 18:28
5F:推 gba356:楼上是不正确的,应用 strcpy() 0.0 03/31 18:35
6F:→ windincloud:这只是写一个不好的范例出来啦~ 要是你没对a做啥大事 03/31 18:46
7F:→ windincloud:基本就像是const char*; 就像偷懒写char *a="abc"; 03/31 18:48
8F:→ windincloud:非偷懒版 string str;char *a;strcpy(a,str.c_str()); 03/31 18:51
9F:→ adrianshum:楼上还是会死. a 没有 initialize, strcpy 会死得很惨 03/31 18:53
10F:→ windincloud:哈~ 对耶~ 要先a=new char[str.length()]; 真是sorry 03/31 19:28
11F:→ godman362:谢谢各位的指教,那想请教C++的string到底是什麽东西 03/31 19:52
12F:→ godman362:因为常常会混淆,所以想趁现在弄清楚些 03/31 19:52
13F:→ james732:其实你实际写写看就知道它们的差异了 应该超明显的... 03/31 19:53
14F:→ godman362:根据g大给的资料,看起来似乎是个class 03/31 19:53
15F:→ godman362:我有试过,compiler跑出一长串的东西 03/31 19:54
16F:→ godman362:他说那一长串就是C++ string,不过看不太懂 03/31 19:54
17F:→ james732:它就是一个 class,有一大堆 member function 可以用 XD 03/31 19:55
18F:→ godman362:原来如此,感谢j大以及楼上的各位解说 03/31 19:56
19F:推 hylkevin:a指向str.c_str()当然没问题 又没说要写 04/01 04:28
20F:推 legnaleurc:问题是其状态不稳定,str的下个操作可能会break掉a 04/01 04:47