Frage zu std::string
-
Hallo,
ich versuche mir durch Selbststudium C++ beizubringen, naja bin noch ziemlich am Anfang, ich hoffe ihr könnt mir helfen.
hier mein Problem:ich schreibe eine kleine Consolenanwendung, der Benutzer gibt einen Dateinamen an:
z.B. C:\temp\Datei.txtdiesen Wert möchte ich in eine Variable vom Typ std::string speichern
hier ein Code-Auschnitt:
---------------------------------------------------
std::string s="";
cout << "Geben Sie bitte den Dateinamen ein: "cin >> s;
oder
cin >> s.c_str();
---------------------------------------------------
beides funktioniert nicht.
was habe ich den falsch gemacht?
-
zweites kann nicht funktionieren, da er ein kontantes objekt zurückliefert.
erstes muss funktionieren. das heisst dein fehler muss wo anderes liegen.
-
Das ist die Fehlermeldung:
Binaerer Operator '>>' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string<char,struct std::char_traits<char>,class std
::allocator<char> >' akzeptiert (oder keine geeignete Konvertierung moeglich)vielleicht kannst du damit etwas anfangen.
-
Sülo schrieb:
Das ist die Fehlermeldung:
Binaerer Operator '>>' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string<char,struct std::char_traits<char>,class std
::allocator<char> >' akzeptiert (oder keine geeignete Konvertierung moeglich)vielleicht kannst du damit etwas anfangen.
#include <string> #include <iostream>
-
naja das habe ich schon leider drin, hier der Code:
#include <iostream.h>
#include <fstream.h>
#include <string>int main()
{
fstream Datei;
std::string DateiName="", string="";cout << "Bitte geben Sie die gewuenschte Datei an.\n";
cout << "Fals sie noch nicht existiert, wird sie erstellt.\n";
cout << "Datei (mit Pfadangabe) . . .: ";cin >> DateiName;
Datei.open(DateiName.c_str(), ios::out | ios::trunc);
if (Datei.is_open() != 1)
{
cout << "\n" << "Datei konnte nicht geoeffnet werden!\n";
return 1;
}cout << "\n"<<"Geben Sie bitte den Text ein, der in die Datei geschrieben werden soll\n\n";
for(int i=0; i<10 || string == "end"; ++i)
{
cout << "Zeile " << i << " . . :";
cin.getline(string.c_str(), sizeof(string));Datei.write(string.c_str(), sizeof(string));
Datei.write("\n", 1);
}if (Datei.is_open() == 1)
{
Datei.clear();
Datei.close();
}return 0;
}
-
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { fstream Datei; string DateiName="", str=""; cout << "Bitte geben Sie die gewuenschte Datei an.\n"; cout << "Fals sie noch nicht existiert, wird sie erstellt.\n"; cout << "Datei (mit Pfadangabe) . . .: "; cin >> DateiName; Datei.open(DateiName.c_str(), ios::out | ios::trunc); if (Datei.is_open() != 1) { cout << "\n" << "Datei konnte nicht geoeffnet werden!\n"; return 1; } cout << "\n"<<"Geben Sie bitte den Text ein, der in die Datei geschrieben werden soll\n\n"; for(int i=0; i<10 || str == "end"; ++i) { cout << "Zeile " << i << " . . :"; getline( cin, str); Datei.write(str.c_str(), str); Datei.write("\n", 1); } if (Datei.is_open() == 1) { Datei.clear(); Datei.close(); } return 0; }
-
Danke für die schnelle Hilfe.
Aber was hatte ich den falsch gemacht?
-
du hast using namespace std vergessen.
sonst musst du std::cout eintippen nicht nur cout
-
er hatte auch die falschen Header (mit .h!) benutzt. Eigentlich hat ssm schon die Lösung gehabt.
-
sorry, aber wo ist denn der Unterschied zwischen <iostream> und <iostream.h>?
-
mit .h ist Ansi C Standard
ohne ist c++ Standard
-
-
Pilger81 schrieb:
mit .h ist Ansi C Standard
ohne ist c++ Standard
Eigentlich nicht, iostream(.h) gibt's in C nicht, die haben stdio.h
Ohne .h gibt's erst seit Einführung des namespace Features.