在函数中将字符串转换为char *的问题

时间:2019-06-06 20:06:20

标签: c++ string char

在我的代码中,我的输入是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 })的调用不匹配”(List&,int&,const char *&,std :: ostream&)'|

1 个答案:

答案 0 :(得分:2)

您的代码结构如下所示:

void Regex(...); 

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

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

由于字符串Regex shadows和函数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);
}