Frage zu Vektoren und Strings in C++

Gast #3089022
Lesenswert?
• ▲
▼
Ich bin gerade dabei C++ zu lernen.

Die erste Aufgabe die wir bekommen haben erfordert den Umgang mit 
Strings und Vektoren. Und zwar soll folgendes gemacht werden:

Das Programm übernimmt beliebig viele übergebene Parameter. Für jeden 
dieser Parameter wird ein neuer String erstellt und diese Strings in der 
Reihenfolge der Parameter in einem vector gespeichert. Im Anschluss gibt 
das Programm zuerst in einer einzelnen Zeile die Länge des Vectors 
(Anzahl der Parameter) sowie die Länge jedes einzelnen Strings (Anzahl 
der Zeichen) in Reihenfolge der Parameter an.

Mein Code schaut so aus:
1
#include <iostream>
2
#include <string>
3
#include <vector>
4

5
using std::cout;
6
using std::cin;
7
using std::endl;
8

9
int main(int argc, char *argv[])
10
{ int count;
11
  std::vector<std::string> argument_vector(argc);
12

13
  cout << argc << endl;
14

15
  for(count = 0; count < argc; count++)
16
  {
17
    argument_vector.at(count) = argv[count];
18
    cout << "Ausgabe von argv:" << argument_vector.at(count) << endl;
19
    cout << "Größe:" << strlen(argument_vector.at(count)) << endl;
20
  }
21

22
  cin >> count;  // Nur damit das Fenster nach der Ausführung in CMD offen bleibt
23

24
}

Jetzt kenn ich aus C noch Funktionen wie strlen oder sizeof.
Nur funktioniert das in C++ nicht so recht. strlen erwartet einen 
Pointer auf die Strings, jedoch ist argument_vector.at(count) kein 
pointer.
Kennt jemand eine Funktion mit der das leicht zu machen ist?
Kann doch nicht sein, dass das so aufwendig ist^^.

lg
#3089090
Lesenswert?
• ▲
▼
Wenn die die Größe des Vektors haben willst, rufst du 
argument_vector.count() auf. Wenn du die Größe eines Elements willst, 
rufst du argument_vector.at(index).count() auf.

Die Größe "jedes Elements" gibt es nicht, denn die sind i.A. alle 
unterschiedlich groß.

Grüße,
Sven
Gast #3090106
Lesenswert?
• ▲
▼
Hallo,

du gehst durch int argc  in  int main(int argc, char *argv[])
doch davon aus, dass bei der Parameterübergabe als erster Parameter 
angegeben wird wie viele Parameter im ganzen übergeben wird.
Wenn du die Funktion aber mit "a ab abc abcd" aufrufen willst, wie soll 
dass gehen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren