C 可以做想要的|char [] cout和倒置的char []
C++ does what it wants | Char[] cout and inverted char[]
我实际上正在使用C 反转字符串/char []方法
#include <iostream>
using namespace std;
void inverse(string input)
{
int length = input.length();
char* output = new char[length];
for(int i = 0; i < length; i++)
{
output[length - (i + 1)] = input[i];
}
cout << output << endl;
delete output;
}
int main(int argc, char *argv[])
{
while(true)
{
string in;
cin >> in;
inverse(in);
}
return 0;
}
问题是,当我输入带有3/5/7的字符串,依此类推时,它将反转,如果我的字符串长度为2/4/6,则在字符上等等。倒立的字符串上有随机的炭,并且只有当我输入这些数字长度时。
我很困惑,因为此错误仅出现偶数。
这是一个小例子:这是一个小例子:
这是新代码(这里一切正常),我知道它与数组末端的/0有关,但为什么只有均匀的数字。
#include <iostream>
using namespace std;
void inverse(string input)
{
int length = input.length();
char* output = new char[length + 1];
for(int i = 0; i < length; i++)
{
output[length - (i + 1)] = input[i];
}
output[length] = ' ';
cout << output << endl;
delete output;
}
int main(int argc, char *argv[])
{
while(true)
{
string in;
cin >> in;
inverse(in);
}
return 0;
}
任何人都可以帮助我找到解决方案吗?
您的字符串未终止。尝试
void inverse(string input)
{
reverse( input.begin(), input.end() );
cout << input << endl;
}
为此,您需要包括定义std::reverse()
功能的algorithm
标头。
它不起作用的原因可能是事实,即内存分配通常保留更多的内存,因此内存边界可以正确对齐。因此,四舍五入的数字不是浪费。那只是一个猜测。但是,我强烈建议您避免不确定的行为。
您在字符串的末端有垃圾,因为它没有以