2014-09-01 188 views
2

我有一種方法,其中一個參數需要輸入const void*如何在C++中將字符串轉換爲const void *?

當我做到這一點,它的工作原理 -

const void *a = "abc"; \\abc is also a string though. 

我已經試過分配一個字符串變量,以一個const void *的變量,但它給了一些錯誤。 爲什麼我不能直接將字符串變量賦值給const void*變量?

如何將字符串轉換爲const void*

還有別的辦法嗎?

感謝,

+0

爲什麼要「const void *」而不是「const char *」? – 2014-09-01 11:37:58

回答

6

如果「串」,你的意思是std::string,那麼這是一個類類型,它不能直接轉換爲指針。像​​這樣的字符串文字是一個可轉換爲指針的字符數組。

如果你想有一個指向字符串的字符數組,那麼你就可以訪問通過c_str功能:

const void * a = my_string.c_str(); 

要注意的是,如果你破壞或修改字符串的指針可以變得無效。

+0

@Ashish你需要明確地複製字符串,如果你需要在使用strcpy或類似的東西破壞/修改原始'std :: string'之後使用它。 – bolov 2014-09-01 11:36:21

+0

非常感謝! – Ashish 2014-09-01 11:40:53

0

std::stringvoid *大,因此不適合它。 可以將C字符串表示(string.c_str())或字符串地址(&string)傳遞給void *。在這兩種情況下,您需要確保在string消失或更改後void *不訪問string

相關問題