本文介绍了string.c_str()是const?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在库中有一个函数,它接受 char *
并修改数据。
尝试给它 c_str()
但是c ++ docs说它返回一个 const char *
。
解决方案
除了新建一个字符数组之外, > Nothing。
由于 std :: string
管理自己的内容,因此您无法对字符串的基础数据。这是未定义的行为。
但是,创建和复制一个字符数组并不难:
code> std :: string original(text);
std :: vector< char> char_array(original.begin(),original.end());
char_array.push_back(0);
some_function(& char_array [0]);
I have a function in a library that takes in a char*
and modifies the data.
I tried to give it the c_str()
but c++ docs say it returns a const char*
.
What can I do other than newing a char array and copying it into that?
解决方案
Nothing.
Because std::string
manages itself its contents, you can't have write access to the string's underlying data. That's undefined behavior.
However, creating and copying a char array is not hard:
std::string original("text");
std::vector<char> char_array(original.begin(), original.end());
char_array.push_back(0);
some_function(&char_array[0]);
这篇关于string.c_str()是const?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!