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