Rudimentäres zu strings



  • Hallo!
    Ich schreibe eine Klausur über C++ und muss dafür noch einiges lernen. Leider ist das Skript mangelhaft, weswegen ich den Willemer (vom Dozenten empfohlen) hier liegen habe.

    Allgemein liegt mein Problem bei den strings, speziell darin, dass ich in der Klausur möglicherweise ein Programm schreiben muss, das eine Benutzereingabe bis zu einem bestimmten Zeichen (#) abspeichert und damit rechnet.
    Meine einzige Idee hierfür ist eben ein string, aber da fangen auch schon die Probleme an.
    Es gibt scheinbar mehrere unterschiedliche Möglichkeiten, strings einzubinden (sstring, string, cstring, string.h ...) - Willemer schreib zunächst über string.

    Da ist dann folgendes kleine Programm beschrieben, welches eine Trennlinie erzeugen soll:

    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	string meinName;
    
    	cout <<string(40.'=') <<endl;
    
    	system("pause");
    	return 0;
    }
    

    In Zeile 10 bekomme ich aber ein "C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante'"

    Wer kann mir helfen? Ich muss in dem Beispiel eine Binärzahl (z.B. 1111 1111#) einlesen und zu einer Dezimalzahl umrechnen, aber es scheitert ja schon beim Einlesen...



  • Dann frag Dich doch mal, was "40.'='" für ein Literal sein soll. Tipp: Meinst Du vielleicht Komma?



  • cout <<string(40.'=') <<endl;
    Du hast falsch abgeschrieben (oder es ist ein Druckfehler):
    Ersetz den Punkt durch ein Komma.

    Es könnte grundsätzlich helfen, sich mal die Konstruktoren von Klassen anzusehen, die man benutzen möchte.
    Zu den unterschiedlichen Möglichkeiten:
    Es gibt nur eine standardkonforme Möglichkeit: #include <string>
    cstring bzw. string.h sind nicht C++ sondern C-String - Headerdateien. sstring kenne ich nicht, ist vielleicht eine Herstellerspezifische Implementierung ...



  • Belli schrieb:

    cout <<string(40.'=') <<endl;
    Du hast falsch abgeschrieben (oder es ist ein Druckfehler):
    Ersetz den Punkt durch ein Komma.

    Es könnte grundsätzlich helfen, sich mal die Konstruktoren von Klassen anzusehen, die man benutzen möchte.
    Zu den unterschiedlichen Möglichkeiten:
    Es gibt nur eine standardkonforme Möglichkeit: #include <string>
    cstring bzw. string.h sind nicht C++ sondern C-String - Headerdateien. sstring kenne ich nicht, ist vielleicht eine Herstellerspezifische Implementierung ...

    Danke, das war's!

    Ich versuche es mal weiter, bin aber immer noch für Hilfe zu dem speziellen Problem (s.o.) dankbar!



  • hallo nochmal!

    meine idee, das ende der eingegebenen Binärzahl zu finden (vom Benutzer mit '#' markiert) sieht so aus:

    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	string ein, aus;
    
    	cout <<string(40,'=') <<endl;
    	cin >>ein;
    	char end='#';
    	string::iterator i;
    	for(i=ein.begin(); ein.at(i)!=end; i++)
    	{
    		cout <<ein[i] <<endl;
    	}
    	system("pause");
    	return 0;
    }
    

    leider funktioniert die for-Schleife so nich, weil wohl das i nicht als Argument in der at-Funktion auftauchen darf.
    Weiß jemand, was ich meine und wie ich es trotzdem erreichen kann?



  • string in;
    getline(cin, in, '#');
    cout << in;

    siehe auch:
    http://www.cplusplus.com/reference/string/getline/


Anmelden zum Antworten