2012-12-24 103 views
3

我使用VS2012/C++,我需要转换为std :: string到char *和我找不到任何材料在网上给如何去任何指导关于这样做。从的std :: string转换为char * C++中

任何代码实例和建议将不胜感激。

+3

'str.c_str()'.. – Mysticial

+2

@Mysticial:好了,严格说是'为const char *'不是吗?但我猜这可能够好了。 –

回答

11

使用

std::string bla("bla"); 
char* blaptr = &bla[0]; 

这是保证,因为C++ 11的工作,和之前的C++ 11的所有流行的实现有效合作。

如果你仅仅需要一个const char*,您可以使用std::string::c_str()std::string::data()

+3

我知道C++ 11要求字节是连续的。但是我没有看到由&bla [0]指向的字符串的任何要求都是零终止的。这对用户来说可能重要也可能不重要。 – user515430

+3

@ user515430:需求在那里,它被隐藏得很好。请参阅[此问题](http://stackoverflow.com/q/7554039/485561)。 – Mankarse

+1

@Mankarse考虑到来回评论的数量,其中没有一份来自委员会成员,我不是100%信服。但为什么使用&bla [0]而不是c_str()?使用指针&bla [0]修改std :: string只是丑陋的。 – user515430

相关问题