Problem mit C++ Übungsprogramm

Antworten
Nachricht
Autor
pil

Problem mit C++ Übungsprogramm

#1 Beitrag von pil » 04. Aug 2007 8:31

hallo

Ich habe probleme mit der Fehlermeldung für ein C++ Übungsprogramm.

Code: Alles auswählen

#include <cstring>
#include <string>
#include <iostream>

char first&#91;100&#93;;
char last&#91;100&#93;;
char full_name&#91;100&#93;;

int main&#40;&#41;
&#123;
        std&#58;&#58;cout << "Vorname&#58; ";
        std&#58;&#58;getline&#40;std&#58;&#58;cin, first, sizeof&#40;first&#41;&#41;;
        std&#58;&#58;cout << "Nachname&#58; ";
        std&#58;&#58;getline&#40;std&#58;&#58;cin, last, sizeof&#40;last&#41;&#41;;

        std&#58;&#58;strncpy&#40;full_name, first, sizeof&#40;full_name&#41;&#41;;

        std&#58;&#58;strncat&#40;full_name, " ", sizeof&#40;full_name&#41;&#41;;
        std&#58;&#58;strncat&#40;full_name, last, sizeof&#40;full_name&#41;-strlen&#40;full_name&#41;-1&#41;;

        std&#58;&#58;cout << "Dein Name ist " << full_name << "\n";

        return &#40;0&#41;;
&#125;
Beim Kompilieren erhalte ich nun die Meldung:

Code: Alles auswählen

$ g++ -Wall name2.cpp -o name2
name2.cpp&#58; In function ‘int main&#40;&#41;’&#58;
name2.cpp&#58;12&#58; error&#58; no matching function for call to ‘getline&#40;std&#58;&#58;istream&, char &#91;100&#93;&#41;’
name2.cpp&#58;14&#58; error&#58; no matching function for call to ‘getline&#40;std&#58;&#58;istream&, char &#91;100&#93;&#41;’
Irgendwi hänge ich da jetzt schon eine ganze Zeit dran und komme zu keiner Lösung.

Vielen Dank

PDA

#2 Beitrag von PDA » 05. Aug 2007 12:08

Ähm, ohje. Du solltest dir ein gutes Buch kaufen und das hier mal lesen.
http://www.c-plusplus.de/forum/viewforu ... is-25.html
http://www.c-plusplus.de/cms
ist die Hauptseite. Ein wenig stöbern schadet nicht.

1. char = character = EIN einzelner Buchstabe
Daraus kann man eine C-Zeichenkette machen #include<cstring>
char * first // C-Zeichenkette (* == Zeiger in diesem Kontext)

2. sizeof ermittelt die Größe des Arrays

3. Um mehrere Namen in das Array zu schreiben kannst du durch das Array "iterieren" (Schleife). Vorher ermitteln ob an der Stelle ein Wert sich befindet, wenn ja -> nächstes Element, wenn nein -> reinschreiben.

4. Benutze Strings (#include<string>)

5. Grundsätzlich immer überprüfen auf eine Index Über- oder Unterschreitung des Arrays.

6. Lesen und Lernen

7. Und so weiter ......

Wobei ich mir hier nicht sicher bin ob du in diesem Fall ein Array benötigst. Eventuell hast du was falsch verstanden.
char first[100] bedeutet -> 100 Elemente von char, und nicht ein Char der Größe 100.
Wie gesagt, nur eine Vermutung. Ist aber ein häufiger Anfänger Fehler.
Die Größe wird durch den Datentyp selbst fest gelegt.

Viel Spaß beim Lernen.

PS: Beim nächsten mal erklärst du besser was dein Code machen soll, das ist in dem Fall nicht wirklich ersichtlich.

pil

#3 Beitrag von pil » 05. Aug 2007 12:28

Bei dem Code geht es darum C Strings in C++ zu benutzen.

im ursprünglichen beispiel entfallen diese zeilen

Code: Alles auswählen

std&#58;&#58;getline&#40;std&#58;&#58;cin, first, sizeof&#40;first&#41;&#41;;
mit denen ich Vor und Nachnamen einlesen will. Wahrscheinlich habe ich an der Stelle etwas falsch verstanden und das funktioniert so nur mit C++ strings.
Naja, ich bin jetzt gerade bereits einige Seiten weiter und gucke mir das später noch einmal genauer an.
Verwenden tue ich übrigends das Buch 'Praktische C++ Programmierung' aus dem O'Reilly Verlag und denke, damit einen ganz guten Griff getan zu haben. Deine Links sind sicher eine gute Ergänzug.

Vielen Dank

PDA

#4 Beitrag von PDA » 06. Aug 2007 0:24

Klar kannst du das auch mit C-Strings machen.
Man muss halt nur die Unterschiede wissen z.B. zwischen Strings und C-Strings, zwischen Arrays und Vektoren. Die Methoden sind hier und da verschieden, nun gut.

Und Ja, die O'Reilly Bücher kosten zwar etwas mehr, aber das lohnt sich in der Regel.

Antworten