siv*_*udh 29 c++ string stl transform
我有2个std :: string.我只是想,给定输入字符串:
为什么这样有效:
  std::string s="hello";
  std::string out;
  std::transform(s.begin(), s.end(), std::back_inserter(out), std::toupper);
但这不会(导致程序崩溃)?
  std::string s="hello";
  std::string out;
  std::transform(s.begin(), s.end(), out.begin(), std::toupper);
因为这有效(至少在相同的字符串上:
  std::string s="hello";
  std::string out;
  std::transform(s.begin(), s.end(), s.begin(), std::toupper);
hrn*_*rnt 43
没有空间out.C++算法不会自动增长其目标容器.您必须自己创建空间,或使用插入适配器.
为了腾出空间out,请执行以下操作:
out.resize(s.length());
[edit]另一种选择是使用此构造函数创建具有正确大小的输出字符串.
std::string out(s.length(), 'X');
| 归档时间: | 
 | 
| 查看次数: | 26778 次 | 
| 最近记录: |