我有一個錯誤在我的程序:「無法從字符串轉換爲char *」。我如何執行此轉換?如何在C++中將字符串轉換爲char *?
回答
如果你能解決一個const char*
,你只需要調用c_str()
方法就可以了:
const char *mycharp = mystring.c_str();
如果你真的需要修改char*
,則需要使字符串的緩衝區的副本。一個vector
是處理這個給你一個理想的方式:
std::vector<char> v(mystring.length() + 1);
std::strcpy(&v[0], mystring.c_str());
char* pc = &v[0];
調用str.c_str()
獲得const char*
:
const char *pch = str.c_str();
注意,最終const char*
有效期只至str
被更改或銷燬。
但是,如果你真的需要一個非const
,你可能不應該使用std::string
,因爲它並沒有設計爲允許改變其背後的基礎數據。這就是說,你可以通過調用&str[0]
或&*str.begin()
獲得一個指向它的數據。
這樣做的醜陋應被視爲一個功能。在C++ 98中,std::string
甚至不需要將其數據存儲在連續的內存塊中,因此這可能會爆炸到你的臉上。我認爲已經發生了變化,但我甚至不記得這是否適用於C++ 03或即將推出的下一版本的標準C++ 1x。
如果你需要做到這一點,可以考慮使用std::vector<char>
代替。您可以用相同的方式訪問其數據:&v[0]
或&*v.begin()
。
在string
對象上使用c_str()
方法得到const char*
指針。警告:如果修改或銷燬對象string
,則返回的指針不再有效。
std::string::c_str()
返回一個C-串具有相同的內容作爲string
對象。
std::string str("Hello");
const char* cstr = str.c_str();
既然你想從string
去一個char*
(即非const char*
),你可以這樣做,但要注意:有在這裏小龍:
string foo = "foo";
char* foo_c = &foo[0];
如果你嘗試修改字符串的內容,你完全靠自己。
問題不只是修改的內容 - 一個字符串的內容不能保證是連續的,所以它可能不是在所有的工作。 – CiscoIPPhone 2010-11-11 18:31:12
我可能是錯在那裏,根據公認的回答這個問題,它保證是連續的,在新標準:http://stackoverflow.com/questions/1986966/does-s0-point-to-contiguous-characters-in -a-stdstring – CiscoIPPhone 2010-11-11 18:33:33
如果const char*
對你有好處然後使用此:myString.c_str()
如果你真的需要char*
和肯定知道char*
將不會再改變你可以使用這個:const_cast<char*>(myString.c_str())
如果char*
可能會改變你需要將字符串複製到其他東西中,然後使用它。其他的東西可能是std::vector
,或new char[]
,這取決於你的需求。
//assume you have an std::string, str.
char* cstr = new char[str.length() +1];
strcpy(cstr, str.c_str());
//eventually, remember to delete cstr
delete[] cstr;
- 1. C++將char轉換爲字符串
- 2. 如何將char []轉換爲字符串?
- 3. 如何將char []轉換爲字符串&
- 4. 如何將char轉換爲字符串?
- 5. 如何將char轉換爲字符串?
- 6. 如何將字符串轉換爲char *在C++中?
- 7. 如何在C++ execve命令中將字符串轉換爲char [] *?
- 8. 在Java中,如何將字符串轉換爲char或char字符串?
- 9. 將char字符串轉換爲字符
- 10. 如何將char數組轉換爲C++中的字符串?
- 11. 如何將char數組轉換爲C++中的字符串?
- 12. 如何將char轉換爲C++中的字符串?
- 13. 如何使用P/INVOKE將C++ char *轉換爲C#字符串
- 14. 如何將char字符串轉換爲wchar_t字符串?
- 15. 如何將char字符串轉換爲std字符串
- 16. 如何將字符串成char []轉換
- 17. 如何將C++字符串轉換爲char *?
- 18. 如何將int轉換爲字符串(char *)C
- 19. C將char值轉換爲字符串char
- 20. 在C中將char轉換爲字符串
- 21. 在Managed C++中將Char數組轉換爲字符串
- 22. 如何在ActionScript 3中將字符串轉換爲char數組?
- 23. 的strtok():將字符串轉換爲char *
- 24. 將字符串轉換爲char *
- 25. 將字符串變量轉換爲char
- 26. 將字符串轉換爲char [] - Java
- 27. 將int和char轉換爲字符串
- 28. 將char轉換爲字符串
- 29. 將字符串轉換爲char?
- 30. 將char轉換爲字符串
請張貼代碼示例。 – superfro 2010-11-11 18:03:01
已發佈的答案無回答實際問題。 – 2010-11-11 18:09:30
感謝ü所有球員,它的作品! – Ptichka 2010-11-11 18:09:49