下面我在C ++中有一个代码,它应该反转向量中的参数,而不是序列。我在下面的代码中将我的问题列为旁注。反转函数应该反转每个参数,然后主函数只输出相反顺序的反转字 例如,程序(“一二三四”)= ruof eerth owt eno
#include <iostream>
#include <string>
using namespace std;
int invert(string normal)
{
string inverted;
for (int num=normal.size()-1; num>=0; num--)
{
inverted.append(normal[num]); //I don't know how to get each character
//I need another command for append
}
return **inverted**; <----
}
int main(int argc, char* argv[])
{
string text;
for (int a=1; a<argc; a++)
{
text.append(invert(argv[a])); //Can't run the invert function
text.append(" ");
}
cout << text << endl;
return 0;
}
答案 0 :(得分:3)
问题是normal[num]
是一个角色。 append()
没有字符重载。
您可以使用inverted.push_back(normal[num]);
请参阅string API。
我应该添加其他一些注意事项:
0)为什么要从int
返回invert()
? inverted
是一个字符串,因此您应该返回一个字符串:
`string invert(string normal);`
1)您可以使用num
:
reverse_iterators
进行迭代。
for (string::reverse_iterator c = normal.rbegin(); c!=normal.rend(); ++c) {
inverted.push_back(*c);
}
2)将字符串传递给函数中未修改的函数时,应该通过引用传递以避免额外的字符串副本。
string invert(const string &normal);
3)您正在遍历0..argc
,因此如果我正确理解您的要求,您的反向字符串将会从预期中退回。