【发布时间】:2021-07-24 10:38:42
【问题描述】:
我尝试使用 char 数组反转字符串,但在输出中打印了一些垃圾值,我不知道是什么原因,而且它只发生在大字符串中。
我的代码
string reverseWord(string str){
int j = 0, n=0;
n = str.length();
char t[n]={0};
for(int i=n-1;i>=0;i--)
{
t[j]=str[i];
j+=1;
}
return t;
}
输入 = APFGMRZXIFPSXKOQDRRQJBBZ 输出 = ZBBJQRRDQOKXSPFIXZRMGFPAB@
我想知道@这两个垃圾值背后的原因
使用gfg的在线IDE。
【问题讨论】:
-
std::reverse(str.begin(), str.end()); return str;-- 你为什么不这样做? -
char t[n]={0};是一个可变长度数组,标准 C++ 不支持。你应该避免它的便携性。 -
你在哪里学过这种编码风格,你应该忘记它AFAIK。您有一个不必要的函数参数副本。您有不受支持的可变长度数组。你有遗留的 C 风格的字符串。您对返回值进行了不必要的转换。整个函数可以是
return string(str.rbegin(), str.rend());
标签: c++ arrays string function char