#include <iostream>
#include <string>
using namespace std;
int main()
{
string word, wordbackw;
getline(cin, word);
int size = word.size();
for (int i = 0; i < size ; i++)
word[size-1-i] = wordbackw[i];
cout << wordbackw << endl;
return 0;
}
cmd中唯一出现的是我的输入。
感谢您的帮助。
编辑:抱歉,忘了将cout添加到代码中。
答案 0 :(得分:2)
您必须先将wordbackw
调整为与word
相同的尺寸:
您可以在循环前初始化wordbackw = word;
并在word
打印出结果。
或者你可以在循环之前调整wordbackw
的大小并将word
个字母复制到wordbackw
个字母(你现在就做对决),然后在{{1 }}
答案 1 :(得分:0)
您缺少任何类型的代码来显示反转的字符串。你只是把它在内存中反转了。
尝试添加内容以在反转后显示文本,例如
cout << wordbackw;
哦,好吧,你的单词交换代码也会以几种方式向后看。你把它加载到word中,然后尝试将word设置为wordbackw的反向,这是空的。索引也会关闭 - 您在空字符串中分配位置,并且您通过源字符串而不是向后索引转发。所以你想要做更多的事情:
for (int i = size - 1; i >= 0 ; i--)
wordbackw += word[i];
答案 2 :(得分:0)
对象wordbackw
为空。因此,您可能不会为对象应用下标运算符。你至少应该在这个陈述中交换操作数
word[size-1-i] = wordbackw[i];
假设操作数将被正确写入。
您可以编写代替此代码段
int size = word.size();
for (int i = 0; i < size ; i++)
word[size-1-i] = wordbackw[i];
以下
wordbackw.reserve( word.size() );
for ( auto i = word.size(); i != 0 ; i-- )
wordbackw.push_back( word[i - 1] );
或者
wordbackw.reserve( word.size() );
for ( auto i = word.size(); i != 0 ; i-- )
wordbackw += word[i - 1];
或者你可以在不使用循环的情况下做同样的事情。例如
wordbackw.assign( word.rbegin(), word.rend() );
答案 3 :(得分:0)
两个问题:
当word[size-1-i] = wordbackw[i];
尝试wordbackw.push_back(word[size-1-i]);
阅读后,您没有在标准输出上打印任何内容。做这个
cout << wordbackw << endl;