首页 > 解决方案 > 在函数中将字符串转换为 char* 的问题

问题描述

在我的代码中,我的 inout 是string,但我的一个函数适用于char*,所以我将其转换如下:

string Regex;
std::cin>>Regex;
const char* char_regex = Regex.c_str();

我的功能:

Regex(automates_list,Regex.size(),char_regex,std::cout);

定义如下:

void Regex(List& list,int const& word_length,const char* word,ostream& out)

错误是:

错误:不匹配调用 '(std::__cxx11::string {aka std::__cxx11::basic_string<char>}) (List&, int&, const char*&, std::ostream&)'|

标签: c++stringchar

解决方案


您的代码结构如下所示:

void Regex(...); 

int main() {
    std::string Regex = ...;
    // ...

    Regex(automates_list,Regex.size(),char_regex,std::cout);
}

你得到一个错误,因为字符串Regex 遮蔽了 function Regex。您可以通过重命名字符串或重命名函数来解决此问题:

重命名函数:这里我将函数重命名为applyRegex.

void applyRegex(...); 

int main() {
    std::string Regex = ...;
    // ...

    applyRegex(automates_list,Regex.size(),char_regex,std::cout);
}

重命名字符串:这里我将字符串重命名为userRegex.

void Regex(...); 

int main() {
    std::string userRegex = ...;
    // ...

    Regex(automates_list,userRegex.size(),char_regex,std::cout);
}

推荐阅读