本文介绍了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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-22 12:13