2010-06-14 4 views
0

그래서 아래에는 벡터의 인수를 뒤집을 수있는 C++ 코드가 있지만 시퀀스는 아닙니다. 아래 코드에서 내 문제를 sidenotes로 표시했습니다. 반전 함수는 각 인수를 반전 가정하고 주요 기능은 단지 ("1 2 3 4") = ruof eerth ENO OWT프로그램이 컴파일되지 않습니다

#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()에서 int을 반환하는? inverted 문자열, 그래서 당신은 문자열을 반환해야합니다 : 반복 num을 사용하는 것보다

`string invert(string normal);` 

1)을 오히려 당신이 사용할 수있는 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을 통과하고 있습니다.

관련 문제