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
Persönliche Seite #3090115
Lesenswert?

Wo ist das Problem? Das Array

  char *argv[]

ist ein Array von char-Pointern.

Man kann also auch schreiben

  char **argv

Und damit enthält

  argv[1] einen Pointer auf "a",
  argv[2] einen Pointer auf "ab",
  ...
  argv[4] einen Pointer auf "abcd"

  argv[0] hingegen enthält einen Pointer auf den Namen
  des Programmes, also z.B. "meinprogram.exe"

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