Я нашел это на другом стеке вопроса:
//http://stackoverflow.com/info/3418231/c-replace-part-of-a-string-with-another-string
//
void replaceAll(std::string& str, const std::string& from, const std::string& to) {
size_t start_pos = 0;
while((start_pos = str.find(from, start_pos)) != std::string::npos) {
size_t end_pos = start_pos + from.length();
str.replace(start_pos, end_pos, to);
start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
}
}
и мой метод:
string convert_FANN_array_to_binary(string fann_array)
{
string result = fann_array;
cout << result << "\n";
replaceAll(result, "-1 ", "0");
cout << result << "\n";
replaceAll(result, "1 ", "1");
return result;
}
который для этого ввода:
cout << convert_FANN_array_to_binary("1 1 -1 -1 1 1 ");
теперь выход должен быть "110011"
здесь выводится метод:
1 1 -1 -1 1 1 // original
1 1 0 1 // replacing -1 with 0's
11 1 // result, as it was returned from convert_FANN_array_to_binary()
Я смотрю на код replaceAll, и я действительно не уверен, почему он заменяет последовательный -1 одним 0, а затем не возвращает никаких 0 (и некоторых 1) в конечном результате. =\