2012-12-24 141 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

相關問題