【发布时间】:2017-09-27 07:40:30
【问题描述】:
我是 C++ 字符串的新手。我只是对下面代码的工作感到困惑(用于反转字符串)。
std:: string rev;
for(int i= str.size()-1; i>=0; --i)
{
rev.push_back(str[i]);
}
std:: cout<<" Reversed= "<<rev<<endl;
问题是字符串的最后一个字符是空字符'\0'。因此,当循环运行第一次迭代时,它应该在 rev 的开头放置一个空字符,还有一件事,这里的字符串 rev 可能不是空终止的,因为 '\0' 没有分配为最后一个字符串的字符。
但是当我执行程序时,它工作正常。我知道我在思考这一切时错了。谁能解释一下工作?我会很高兴并感谢你:)
【问题讨论】:
-
提示:你可以用这行代码大大简化代码:
std::reverse_copy(begin(str), end(str), std::back_inserter(rev)); -
谢谢@ChristianHackl
标签: c++ string loops null-character