繁体   English   中英

C++ 字符串返回为“

[英]C++ string returning as "

所以我想写一个函数来反转 C++ 中的字符串。 我已经弄清楚了大部分代码,当我计算出字符串时,它显示了我需要的内容。 但是当我测试代码时,结果是我从函数中得到:“。这是我的代码:

#include <iostream>
#include <string>
using namespace std; 
string result;
string reverseString (string str)
{
  for(int i = str.length(); i >= -1; i--) {
    result+= str[i];
  }
  cout << result;
  return result;
}

在这个 for 循环中的第一次迭代

  for(int i = str.length(); i >= -1; i--) {
    result+= str[i];
  }

终止零字符'\\0'写入对象result的第一个位置,因为表达式str[i]在这种情况下等效于表达式str[str.length()]

所以结果字符串可以作为空字符串输出。

此外,您还尝试使用导致未定义行为的负索引-1访问源字符串。

而不是这个 for 循环,你可以只写

result.assign( str.rbegin(), str.rend() );

如果您想使用 for 循环执行任务,则循环可以按以下方式查找

  result.clear();
  result.reserve( str.length() ); 

  for ( auto i = str.length(); i != 0; ) {
    result += str[--i];
  }

请注意,在函数内使用全局变量 result 是一个坏主意。 该功能可能看起来像

std::string reverseString( const std::string &str )
{
    return { str.rbegin(), str.rend() };
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM