C++:如何用另一个字符替换字符串中字符的所有实例?

Nul*_*uli 3 c++

我在互联网上找到了这种方法:

//the call to the method: 
cout << convert_binary_to_FANN_array("1001");

//the method in question: 
string convert_binary_to_FANN_array(string binary_string)
{
string result = binary_string;

replace(result.begin(), result.end(), "a", "b ");
replace(result.begin(), result.end(), "d", "c ");
return result;
}
Run Code Online (Sandbox Code Playgroud)

但这给了

main.cpp:30: error: no matching function for call to ‘replace(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, const char [2], const char [3])’
Run Code Online (Sandbox Code Playgroud)

Gar*_*han 5

你需要字符而不是字符串作为第三和第四个参数replace.当然,如果你真的想更换,不会做'a'"b ".

所以,例如,

string convert_binary_to_FANN_array(string binary_string)
{
    string result = binary_string;

    replace(result.begin(), result.end(), 'a', 'b');
    replace(result.begin(), result.end(), 'd', 'c');
    return result;
}
Run Code Online (Sandbox Code Playgroud)

as转换为s bds转换为cs(尽管为什么你要这样做只包含0和1的字符串,我无法想象).但是,它不会插入任何额外的空格.

如果确实需要额外的空格,请参阅(1)Timo Geusch提供的参考文献和(2)this:用另一个字符串替换字符串的一部分.