C++ 这段代码中的错误是什么

C++ 这段代码中的错误是什么,c++,C++,在下面的代码中,我试图反转字符串,没有编译时错误,但是没有显示任何内容。怎么了 string string1="arunachalam"; void reverseStr() { for(int i=string1.length();i<0;i--) { cout<<string1[i]; } } string1=“arunachalam”; void reverseStr

在下面的代码中,我试图反转字符串,没有编译时错误,但是没有显示任何内容。怎么了

   string string1="arunachalam";

   void reverseStr()
   {        
       for(int i=string1.length();i<0;i--)
       {
          cout<<string1[i];
       }
   }
string1=“arunachalam”;
void reverseStr()
{        

对于(int i=string1.length();i问题出现在
int i=string1.length()
语句中,因为索引是基于0的,所以应该是
int i=string1.length()-1
另外,你的
i<0
条件是错误的,我会让你自己来解决。

你的循环条件
i<0
是罪魁祸首。循环会立即退出,因为字符串的长度从不为负。替换为
i>=0

您还应该具有
i=string1.length()-1
,因为字符串索引是基于零的。因此:

for(int i = string1.length() - 1; i >= 0; i--) {
    cout << string1[i];
}
for(int i=string1.length()-1;i>=0;i--){

cout很抱歉,但要使这项工作正常运行,应该是I>0,因为这是使用反向迭代器的最干净、一次关闭安全和停止条件安全的解决方案,假设您使用的是std::string

string string1="arunachalam";
void reverseStr()
{
   string::const_reverse_iterator  cur;
   // .rbegin() returns iterator to reverse-begin, i.e. the end ...
   // operator++ on a reverse iterator does move it in the "right"
   // (desired) direction.
   for(cur=string1.rbegin(); cur!=string1.rend(); cur++)
       cout << *cur;
}
string1=“arunachalam”;
void reverseStr()
{
字符串::const\u reverse\u迭代器cur;
//.rbegin()返回迭代器以反转开始,即结束。。。
//反向迭代器上的运算符++会将其移动到“右侧”
//(期望的)方向。
对于(cur=string1.rbegin();cur!=string1.rend();cur++)

cout如果函数不依赖全局变量,则更有用。使用参数和返回值,如签名:

const string& reverseStr(const string& s);
将更有用。该定义可以使用std::string中的
反向迭代器
,因此:

const string& reverseStr(const string& s)
{
    return string(s.rbegin(), s.rend());
}
其次是实际使用:

string string1="arunachalam";

cout << reverseStr(string1); // XXX: add an endl, if needed
string1=“arunachalam”;

如果要显示字符串的第一个字符,请使用cout和“iNot”。所有这些混淆表明向后循环需要一个干净的习惯用法。而且它存在(除了反向迭代器):
for(unsigned i=string1.size();i-->0;)
:)