我一直在使用C++字符串,並嘗試使用C函數(如strcpy()
)將char *
字符串加載到std::string
中。由於strcpy()
需要char *
作爲參數,我一定要投它該是這樣的:std :: string.c_str()與std :: string有不同的值嗎?
std::string destination;
unsigned char *source;
strcpy((char*)destination.c_str(), (char*)source);
的代碼工作正常,當我在調試器中運行該程序的*source
的值存儲在destination
,但一些奇怪的原因,它不會與語句打印出
std::cout << destination;
我注意到,如果我用
std::cout << destination.c_str();
值打印正確,一切正常。爲什麼會發生?有沒有更好的方法將unsigned char*
或char*
複製到std::string
(字符串流?)這似乎只有當我在複製操作中將字符串指定爲foo.c_str()
時纔會發生。
編輯:要回答「你爲什麼要這樣做?」這個問題,我使用strcpy()
作爲一個簡單的例子。還有些時候它比分配更復雜。例如,必須使用strncpy()
僅將X數量的字符串A複製到字符串B中,或將std::string
傳遞給C庫中的函數,該函數將char *
作爲緩衝區的參數。
所以,你忽略了你的編譯器給你的錯誤,並決定關閉它,把它轉換爲'(char *)'?你想知道爲什麼你有問題? –
爲什麼你不使用: destination = source; – Morwenn
所有的答案都會問隱含的問題爲什麼?爲什麼? – rerun