我使用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 *'不是嗎?但我猜這可能夠好了。 –