[英]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.