如果我有一個字符串的最有效的方法:什麼是字符串轉換爲字符數組/值,一個字符指針可以指向
std::string Pooptacular = "Pooptacular"
,我想將其轉換爲字符數組,我有一些選擇 之一是:
char* poopCArr = Pooptacular.c_str();
或者我可以做的memcpy或strcpy的和這樣的東西。
我想知道的是,哪種方法是最快的 或最有效的。換句話說,我應該使用哪種方法如果 我要在一個程序中運行數十萬次?
如果我有一個字符串的最有效的方法:什麼是字符串轉換爲字符數組/值,一個字符指針可以指向
std::string Pooptacular = "Pooptacular"
,我想將其轉換爲字符數組,我有一些選擇 之一是:
char* poopCArr = Pooptacular.c_str();
或者我可以做的memcpy或strcpy的和這樣的東西。
我想知道的是,哪種方法是最快的 或最有效的。換句話說,我應該使用哪種方法如果 我要在一個程序中運行數十萬次?
如果您只需要數據的只讀指針,請使用c_str
。它不會轉換任何東西。它只是讓你訪問已經分配的緩衝區string
。當然,如果你想改變它,你必須將它複製到一個新的緩衝區,如果你這樣做,不要指望你的改變被反映在你的原始對象中。
正是我需要的。 Muchas gracias – imkendal
關於這個答案還有一件事,當你使用'string :: c_str'查詢指針時,你得到一個指向**內部字符串數據**的指針,這打破了封裝原則,即使你依靠這個指針來執行只讀操作:如果'const char *'的std :: string'實例所有者被刪除,會發生什麼?恕我直言,最好使用'std :: string'對象而不是它的'const char *'內部指針btw:@kjh不要忘記標記答案被接受;) –
取決於使用情況。 '.c_str()'不會複製任何內容,只是將'const char *'返回到'std :: string'中使用的內存。你會修改它嗎?此外,'const char * poorCArr'不是'char'數組。 –
你有沒有試過測量任何東西? –