函数,该函数将char数组作为参数

Function that takes a char array as a parameter

本文关键字:函数 参数 数组 char      更新时间:2023-10-16

我想使用一个函数,它将char str[]作为参数。我想调用提供字符串输入的函数。

void someFunction (char str[]) {
    /* ... */
}
// Works.
someFunction("1010101");
// Does not work.
string someString;
someFunction(someString); 

我怎样才能接到第二个上班电话?

编辑:我无法更改函数的输入参数。

取决于字符串操作的性质。如果您读取但不写入字符串,请将原型更改为const char str[]并使用someString.c_str(),就像其他人建议的那样。

如果更改字符串的字符而不更改字符串的长度,请使用&*someString.begin()

如果扩展/截断字符串,则更容易传递string&并根据字符串对象进行操作。老实说,麻烦少了。

您应该能够做到:

someFunction(const_cast<char*>(someString.c_str()));

虽然我不确定如果str被修改会发生什么。

最好是修改原始函数,使其采用不同的参数类型。

std::string需要的是void someFunction(std::string& str);

这个问题是有原因的——std::string的数据不能保证是连续的内存(至少在C++11之前)。因此,将其缓冲区作为连续分配(char[])进行操作是一个非常糟糕的想法。

丢弃CCD_ 12的CCD_ 11也是一个坏主意。您可能面临的一个直接问题是,std::string实现可能与其他std::string实例共享后备字符串分配(写时复制),并且您最终会修改其他std::string的值。当然,在它们自己定义的实现方式中,还有许多其他不好的事情可能会出错——标准为标准库的实现者提供了非常灵活的方式。

编辑:我无法更改函数的输入参数。

请改用std::vector

您可以让函数使用std::string

void someFunction (std::string &str) {