Программа не скомпилируется - PullRequest
0 голосов
/ 15 июня 2010

Итак, ниже у меня есть код на C ++, который должен инвертировать аргументы в векторе, но не последовательность.Я перечислил свои проблемы как sidenotes в коде ниже.Предполагается, что функция инвертирования инвертирует каждый аргумент, а затем основная функция просто выводит инвертированные слова в том же порядке. Например, программа («один два три четыре») = 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 Ответ

3 голосов
/ 15 июня 2010

Проблема в том, что normal[num] является символом.append() не имеет перегрузки для символов.

Вы можете использовать inverted.push_back(normal[num]);

См. 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, поэтому ваши перевернутые строки будут обратными от ожидаемых, если я правильно понимаю ваши требования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...