2010-06-14 102 views
0

所以下面我有一個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; 
} 

回答

3

問題是normal[num]是一個字符。 append()沒有字符重載。

您可以使用inverted.push_back(normal[num]);

string API

我要補充其他幾個注意事項:

0)爲什麼要退從invert()intinverted是一個字符串,所以你應該返回一個字符串:

`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,所以你的逆轉字符串將向後從期望是什麼,如果我正確地理解你的要求。