Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;如何向后打印字符串?_C++_String - Fatal编程技术网

C++ C++;如何向后打印字符串?

C++ C++;如何向后打印字符串?,c++,string,C++,String,我正在尝试使用如下迭代器向后打印std::string: std::string back = "hello"; for(std::string::iterator it=back.end(); it!=back.begin(); --it) { std::cout << (*it); } 为什么它不也打印出h?我尝试了两种不同的方法,但我似乎不明白为什么。任何帮助都将不胜感激,谢谢!!:) 它将被初始化为end()。然后,在循环内部: std::cout <<

我正在尝试使用如下迭代器向后打印
std::string

std::string back = "hello";
for(std::string::iterator it=back.end(); it!=back.begin(); --it)
{
    std::cout << (*it);
}
为什么它不也打印出h?我尝试了两种不同的方法,但我似乎不明白为什么。任何帮助都将不胜感激,谢谢!!:)

它将被初始化为
end()
。然后,在循环内部:

std::cout << (*it);
它将被初始化为
end()
。然后,在循环内部:

std::cout << (*it);
std::string back=“hello”;
for(std::string::reverse_迭代器it=back.rbegin();it!=back.rend();+it)
{
std::cout
std::string back=“hello”;
for(std::string::reverse_迭代器it=back.rbegin();it!=back.rend();+it)
{

std::cout如果不需要for循环:

#include <algorithm>

std::string string_back = "hello";
std::reverse(string_back.begin(), string_back.end());
std::cout << string_back; // prints 'olleh'
#包括
std::string_back=“hello”;
std::reverse(string_back.begin(),string_back.end());

std::cout如果不需要for循环:

#include <algorithm>

std::string string_back = "hello";
std::reverse(string_back.begin(), string_back.end());
std::cout << string_back; // prints 'olleh'
#包括
std::string_back=“hello”;
std::reverse(string_back.begin(),string_back.end());

std::cout问题是
back.end()
指向字符串后面,而不是最后一个元素。您尝试过吗?为什么不使用
std::reverse()
it>=back.begin()
它失败的原因是因为begin指向“H”,而您在该条件下终止循环。而end指向“o”之后的“char”,因此,如果您从开始循环到结束,o将被打印。问题在于
back.end()
指向字符串后面,而不是最后一个元素。您尝试过了吗?为什么不使用
std::reverse()
it>=back.begin()
它失败的原因是因为begin指向“H”,而您在该条件下终止循环。而end指向“o”之后的“char”,所以如果您从begin到end循环,o将被打印出来。但是,我还打算建议使用反向迭代器。啊,我明白了。感谢您对我出错的原因的解释。我相信我将使用反向迭代器,虽然现在我知道它们存在:)请告诉我。不过,我还打算建议使用反向迭代器。啊,我明白了。感谢你对我出错的原因的解释。我相信我会使用反向迭代器,尽管现在我知道它们存在:)在我的情况下,我特别想要一个迭代器,因为我我在每个<代码> char < /c>上做了一些修改,但是我会记住:“我明白了。在以后的案例中考虑我的答案知识。在我的例子中,我特别想要一个迭代器,因为我正在对每个<代码> char 进行一些转换,但是我会记住:”啊,我明白了。考虑一下我的答案知识。n将来的情况。我将使用反向迭代器,因为我知道它们存在。谢谢!:)我将使用反向迭代器,因为我知道它们存在。谢谢!:)
std::string back = "hello";
for (std::string::reverse_iterator it = back.rbegin(); it != back.rend(); ++it)
{
    std::cout << (*it);
}
#include <algorithm>

std::string string_back = "hello";
std::reverse(string_back.begin(), string_back.end());
std::cout << string_back; // prints 'olleh'