我使用VS2012/C++,我需要转换为std :: string到char *和我找不到任何材料在网上给如何去任何指导关于这样做。从的std :: string转换为char * C++中
任何代码实例和建议将不胜感激。
我使用VS2012/C++,我需要转换为std :: string到char *和我找不到任何材料在网上给如何去任何指导关于这样做。从的std :: string转换为char * C++中
任何代码实例和建议将不胜感激。
使用
std::string bla("bla");
char* blaptr = &bla[0];
这是保证,因为C++ 11的工作,和之前的C++ 11的所有流行的实现有效合作。
如果你仅仅需要一个const char*
,您可以使用std::string::c_str()
或std::string::data()
我知道C++ 11要求字节是连续的。但是我没有看到由&bla [0]指向的字符串的任何要求都是零终止的。这对用户来说可能重要也可能不重要。 – user515430
@ user515430:需求在那里,它被隐藏得很好。请参阅[此问题](http://stackoverflow.com/q/7554039/485561)。 – Mankarse
@Mankarse考虑到来回评论的数量,其中没有一份来自委员会成员,我不是100%信服。但为什么使用&bla [0]而不是c_str()?使用指针&bla [0]修改std :: string只是丑陋的。 – user515430
'str.c_str()'.. – Mysticial
@Mysticial:好了,严格说是'为const char *'不是吗?但我猜这可能够好了。 –