Problem mit C++ Übungsprogramm

Post Reply
Message
Author
pil

Problem mit C++ Übungsprogramm

#1 Post by pil »

hallo

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

Code: Select all

#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: Select all

$ 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 Post by PDA »

Ä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 Post by pil »

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

im ursprünglichen beispiel entfallen diese zeilen

Code: Select all

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 Post by PDA »

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.

Post Reply