2012-11-21 39 views
0

如果我有一个字符串的最有效的方法:什么是字符串转换为字符数组/值,一个字符指针可以指向

std::string Pooptacular = "Pooptacular" 

,我想将其转换为字符数组,我有一些选择 之一是:

char* poopCArr = Pooptacular.c_str(); 

或者我可以做的memcpy或strcpy的和这样的东西。

我想知道的是,哪种方法是最快的 或最有效的。换句话说,我应该使用哪种方法如果 我要在一个程序中运行数十万次?

+1

取决于使用情况。 '.c_str()'不会复制任何内容,只是将'const char *'返回到'std :: string'中使用的内存。你会修改它吗?此外,'const char * poorCArr'不是'char'数组。 –

+0

你有没有试过测量任何东西? –

回答

1

如果您只需要数据的只读指针,请使用c_str。它不会转换任何东西。它只是让你访问已经分配的缓冲区string。当然,如果你想改变它,你必须将它复制到一个新的缓冲区,如果你这样做,不要指望你的改变被反映在你的原始对象中。

+0

正是我需要的。 Muchas gracias – imkendal

+0

关于这个答案还有一件事,当你使用'string :: c_str'查询指针时,你得到一个指向**内部字符串数据**的指针,这打破了封装原则,即使你依靠这个指针来执行只读操作:如果'const char *'的std :: string'实例所有者被删除,会发生什么?恕我直言,最好使用'std :: string'对象而不是它的'const char *'内部指针btw:@kjh不要忘记标记答案被接受;) –

相关问题