我在回文程序中翻转字符串时遇到了麻烦。我想要的是输入“cat”,然后输出“tac”,但是当我运行它时,它不会显示反转的字符串,程序停止工作。任何人都可以帮助我吗?
#include <iostream>
#include <string.h>
using namespace std;
int main(){
string phrase1,phrase2;
int len;
cout<<"Please enter a word or phrase: ";
cin>>phrase1;
len = phrase1.length();
for(int a=1;a<=len;a++){
phrase2[len-a] = phrase1[a-1];
}
cout<<endl<<phrase1<<endl<<phrase2<<endl;
return 0;
}
答案 0 :(得分:3)
您需要先将短语2调整到合适的长度。
phrase2.resize(len);
答案 1 :(得分:2)
当你这样写:
for(int a=1;a<=len;a++){
phrase2[len-a] = phrase1[a-1];
}
你试图用phrase1的反向填充phrase2。但是你从来没有为phrase2分配内存!
由于这是一个回文,你知道你希望phrase2具有相同大小的phrase1,所以你可以预先写phrase2.resize(len);
。