char array aus string

Hallo,
ich will aus einem String ein Char Array erstellen. Dazu hab ich mir überlegt, muss ich erstmal die Länge des Strings kennen. Bis dahin hab ich das wie folgt umgesetzt:

#include <iostream>

using namespace std;

int main()
{
string nachricht;
getline(cin, nachricht); //Nachricht wird eingelesen
int i=nachricht.size(); //Länge des Strings wird bestimmt

}

Jetzt weiß ich aber nicht, wie ich letzendlich aus dem String ein char array erstellen kann.
Ist bis dahin überhaupt alles richtig?
Vielen Dank schon mal für eure Hilfe!
 
Hi, also am besten speicherst du es sofort in ein Array und zwar so:

Code:
#include<iostream>
using namespace std;

int main()
{
    char Nachricht[100];
    
    cin.getline(Nachricht,100); //Nachricht wird eingelesen
    for(int i=0;i<strlen(Nachricht);i++)         //Nachricht aus array auslesen
    {
            cout<<Nachricht[i];
    }
    
   
    
    
    system("pause");
    return 0;
    
}


mfg Fabi

ps: die länge des Strings bekommst du mit der Funktion strlen();
 
Zuletzt bearbeitet:
Hi.
Hi, also am besten speicherst du es sofort in ein Array und zwar so:
Da muß man aber sicher sein, das die Nachricht eine bestimmte Größe nicht überschreitet.

@bastionmancher: Wenn du die eingesene Zeile nur als konstanten C-String an eine Funktion übergeben willst, kannst du die c_str() Methode der std::string Klasse benutzen. Wenn du wirklich ein Zeichen-Array haben willst, mußt du eins dynamisch erstellen und dann kopieren:
C++:
string line;
getline(cin, line);

printf("%s", line.c_str());

char* zeichen = new char[line.size() + 1];

strcpy(zeichen, line.c_str());
... /* zeichen Variable benutzen */

delete[] zeichen; // nicht vergessen wieder freizugeben!
Gruß
 
Zuletzt bearbeitet:
Danke soweit!
Deine Lösung funktioniert deepthroat. Allerdings verstehe ich nicht, wieso die Größe des Arrays als name.size()+1 festlegst. Warum reicht als Größe name.size nicht?

Eine zweite Frage noch: Mit system("") kann man doch Befehle direkt an die Eingabeaufforderung übergeben, oder? Kann man damit auch den eingegebenen Text irgendwie übergeben? Also z.B. so:

Code:
string verzeichniss;
getline(cin, verzeichniss);
system("cd "verzeichniss);

Ich weiß, dass das Programm nicht viel Sinn macht, es geht mir aber auch nur ums Prinzip.
 
Hi,

am Ende jeder Zeichenkette steht ein '\0' Zeichen um zu zeigen
das die Zeichenkette zu ende ist.

Beispiel:

[0] w -> h
[1] r -> a
[2] f -> l
[3] g -> l
[4] j -> o
[5] # -> \0
[6] ! -> !
[7] d -> d

Zuerst legst du ein Feld der größe 8 an und da steht irgendwas
drin. jetzt schreibst du "hallo" rein und um das Ende von deiner
Zeichenkette zu finden brauchst du noch eine Stelle für das \0
Zeichen.

Sie system Funktion bekommt nur ein Argument übergeben,
du musst deine Zeichenketten also zuerst zusammenfügen
und kannst sie dann übergeben.

Benny
 
Hallo,
ich habe jetzt das nächste Problem. Ich will nämlich aus einem eindimensionalen char Array einen integer machen. Geht das überhaupt? Habe überhaupt keine Idee... Danke schon mal für eure Hilfe.

Gruß
 
Hallo,
ich habe jetzt das nächste Problem. Ich will nämlich aus einem eindimensionalen char Array einen integer machen. Geht das überhaupt? Habe überhaupt keine Idee... Danke schon mal für eure Hilfe.
Wenn in dem C-String eine ganze Zahl drin steht, kann man die Zahl in einen Integer einlesen:
C++:
#include <sstream>
#include <iostream>
#include <string>

using namespace std;

char zahl[] = "123";
istringstream reader(zahl);
int x;
if (reader >> x) {
  cout << "zahl = " << x << endl;
} else {
  cerr << "Fehler beim Einlesen." << endl;
}
Gruß
 
Zurück