程序不会编译

时间:2010-06-14 20:01:23

标签: c++ string loops

下面我在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;
 }

1 个答案:

答案 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,因此如果我正确理解您的要求,您的反向字符串将会从预期中退回。