【发布时间】:2022-11-22 23:29:40
【问题描述】:
为什么 std::transform 不能这样工作:
std::string tmp = "WELCOME";
std::string out = "";
std::transform(tmp.begin(), tmp.end(), out.begin(), ::tolower);
出来是空的!
但这有效:
std::transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);
我不希望转换就地发生。
【问题讨论】:
-
C++ 算法分配给范围。有成为那里分配的范围。空字符串是一个空范围。但是请注意,您的代码 sn-p 中有一点未定义的行为。
-
你需要通过
back_inserter。