VC++ operator
-
Hallo zusammen,
ich habe ein problem mit den operanden.
#include "targetver.h" #include <stdio.h> #include <tchar.h> #include <iostream> #include <conio.h> #include <cstdlib> std::string a; int _tmain(int argc, _TCHAR* argv[]) { std::cout <<"Name:" <<std::endl; std::cin >> std::string(a); }bei
std::cin >> std::string(a);
zeigt er mir bei
einen fehler an:
Error: Kein ">>"-Operator stimmt mt diesen Operanden überein.ich habe probiert auf einen ander weiße die eingabe zu schreiben, hat aber auch nicht geklapt. Warum zeigt der Vc++ das an?
Auserdem:
Wie kann man bei "cout" die ausgaben anzeigen lassen ohne den operator "<<" zu benutzen?Vielen dank im voraus.
Kira
-
Hallo!
Also bei std::cin kommt nach dem >> nicht mehr das std::string, sondern nur noch die Variable a.
Sieht dann so aus:
std::cin>>a;Und cout ohne den stream Operator (<<) geht so ohne weiteres nicht.
-
Außerdem solltest du <string> inkludieren und <stdio.h>, <tchar.h>, <conio.h> und <cstdlib> rausschmeißen.
-
Cybertec schrieb:
Also bei std::cin kommt nach dem >> nicht mehr das std::string, sondern nur noch die Variable a. ...
Hm, das würde aber etwas an der Semantik des Programms drehen (auch wenn Kira vermutlich genau das vorhatte).
@Kira
Wenn du std::string verwendest solltest du auch darauf achten die richtigen Header einzubinden, damit std::string bekannt wird, dann "funktioniert" deine Konstruktion auch. Ich hoffe dir ist aber klar, dass du damit ein temporäres string-Objekt erzeugst, welches mit a initialisiert wird und das du später nicht mehr ansprechen kannst.
-
Michael E. schrieb:
Außerdem solltest du <string> inkludieren und <stdio.h>, <tchar.h>, <conio.h> und <cstdlib> rausschmeißen.
tchar.h brauchts schon fürs _tmain(..) und TCHAR.
-
Ich habe es jetzt den Quellkot geändert in
string a; //... std::cin>>a; //fehler bleibt trozdem //...???
Was nun?Kira
-
weils noch immer std::string a; ist.
Ich sags mal deutlicher sonst ist es unklar: INCLUDE STRING!
Edit, ich gehe auf Nummer sicher und poste einen funktionierenden code...
#include <tchar.h> #include <iostream> #include <string> std::string a; int _tmain() { std::cout << "Name:" << std::endl; std::cin >> a; return 0; }
-
Hab das gerade nochmal ausprobiert, und mit std::... geht es nicht (warum auch immer).
Aber so funktioniert es:
#include <iostream> #include <string> using namespace std; int main() { string a; cout<<"Name: "; cin>>a; cout<<"Dein Name lautet: "<<a; return 0; }Also dann global das Namespace "std" einbinden, dann braucht man auch vor dem cout, cin, cerr, endl, usw. kein std:: mehr.
-
Kann mir nur sehr schwer vorstellen, dass die explizite Qualifikation nicht geht.
Zeig mal den Code, der bei dir anscheinend nicht funktioniert.using kann man natürlich brauchen, aber nicht im Header!
-
Tja drakon, hast es wohl auch nicht gesehen, was?
HighLigerBiMBam hat doch die Lösung schon geschrieben, und zwar fehlte vor string a; auch das std::

-
Cybertec schrieb:
Tja drakon, hast es wohl auch nicht gesehen, was?
HighLigerBiMBam hat doch die Lösung schon geschrieben, und zwar fehlte vor string a; auch das std::

Das war mir zu Haarestreubend
In diesem Fall lieber auf Nummer sicher gehen 
-
Kannsch verstehen.

Ok, also hier nochmal der Code ohne using namespace std:
#include <iostream> #include <string> int main() { std::string a; std::cout<<"Name? "; std::cin>>a; std::cout<<"Dein Name ist: "<<a; return 0; }
-
Cybertec schrieb:
Tja drakon, hast es wohl auch nicht gesehen, was?
HighLigerBiMBam hat doch die Lösung schon geschrieben, und zwar fehlte vor string a; auch das std::

Habe ich vermutet, dass etwas gefehlt hat, darum wollte ich, dass du das ganze nochmal postest/überlegst. - Meistens findet man dann den Fehler selbst, wenn man versucht ihn jemandem zu erklären.

-
Wieso sollte ich nochmal überlegen? Ich habe den Thread nicht erstellt, allerdings ist mir das mit dem std:: vor string nicht gleich aufgefallen.
