我尝试使用std::replace
算法:
replace(out.begin(), out.end(), '\r', '\r\n'); // error
replace(out.begin(), out.end(), "\r", "\r\n"); // error
replace(out.begin(), out.end(), "\\r", "\\r\\n"); // error
我总是会得到参数不明确的错误。我究竟该如何指定\r
和\n
以便编译器不会抱怨?
编辑:
错误:
could not deduce template argument for 'const _Ty &' from 'const char [5]'
template parameter '_Ty' is ambiguous
'replace': no matching overloaded function found
答案 0 :(得分:3)
虽然原则上可以通过标准/ Boost函数的某种组合来解决,但它的特定性足以获得其自身的功能,因此也具有其自身的隐含性。可能就是这样简单:
std::string cr_to_crlf(std::string const& s) {
std::string result;
result.reserve(s.size());
for (char c : s) {
result += c;
if (c == '\r') {
result += '\n';
}
}
return result;
}