Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » streams

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
30.01.2004, 20:04 Uhr
~Dirk22
Gast


Hi,

ich habe mir das C++ Buch von Bjarne Stroustrup gekauft. Nun wollte ich ein kleines Beispiel aus diesem Buch ausprobieren. Aber leider taucht ein Problem dabei auf. Die Zeile mit dem Vektor verursacht diese Probleme. Es handelt sich um die Fehlermeldung error C2664. In der Hilfe steht dazu drin, dass einer der Parameter nicht in den gewünschten Typ gecastet werden können.
Was muss ich tun, damit es funktioniert. Ich wollte eigentlich nichts anderes tun, als den Namen von einer Ziel- und Quelldatei einzulesen und dann diesen Eingabestream ersteinmal in einen Vektor zu schreiben.
Hier mal der Code:



C++:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>


int main()
{
    std::string from, to;
    std::cin >> from >> to;

    std::ifstream is(from.c_str());      std::istream_iterator<std::string> ii(is);
    std::istream_iterator<std::string> eos;

    std::vector<std::string> b(ii, eos); //hier ist das Problem

    return 0;
}



Vielen Dank im Voraus

Dirk

Dieser Post wurde am 30.01.2004 um 20:15 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.01.2004, 20:18 Uhr
0xdeadbeef
Gott
(Operator)


Du hast das

C++:
#include <iterator>


vergessen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.01.2004, 20:45 Uhr
~Dirk22
Gast


Ich habe das #include <iterator> gerade hinzugefügt. Aber es kommt die gleiche Fehlermeldung.

mfg

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.01.2004, 08:30 Uhr
Tommix



Hallo,
ich kann zwar nicht helfen, aber vieleicht hat jemand über das Wochenende Zeit, sich die komplette Fehlermeldung durchzulesen ;)

C++:
error C2664: '__thiscall std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >(unsigned int,const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,const class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &)' : Konvertierung des Parameters 1 von 'class std::istream_iterator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,char,struct std::char_traits<char> >' in 'unsigned int' nicht moeglich. Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden



- Tommix

Dieser Post wurde am 31.01.2004 um 08:30 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.01.2004, 09:59 Uhr
Pablo
Supertux
(Operator)


Also, ich würde sagen, das ist ein (typisches) VC++ Problem, dass sich weigert, die Standards zu unterstützen. Ich habe den Code


C++:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>

int main()
{
    std::string from, to;
    std::cin >> from >> to;

    std::ifstream is(from.c_str());      std::istream_iterator<std::string> ii(is);
    std::istream_iterator<std::string> eos;

    std::vector<std::string> b(ii, eos); //hier ist das Problem

    return 0;
}


mit dem g++ (GCC) 3.3.2 unter Linux kompiliert und er wurde problemlos kompiliert. VC++ unterstützt irgendwie die STL nicht ganz, ich hatte auch immer Probleme mit vector oder set, ich bekamm immer so komische Sachen, wie es fehlen Parameter und so.

Hast du nicht mit einem anderen Kompilier versucht? Versuche mit DEV-CPP zu kompilieren, ich würde beten, das geht es 100%.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.01.2004, 11:35 Uhr
~Dirk22
Gast


Hi,

habs gerade mit dev-cpp ausprobiert. Dort funktioniert es.
Trotzdem. Das kann doch nicht sein, dass es mit dem Visual Studio nicht funktioniert. Das ist doch unglaublich. Da muss es doch auch irgendwie machbar sein.
Das Tool wird doch nahezu überall verwendet.

mfg

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
31.01.2004, 12:00 Uhr
virtual
Sexiest Bit alive
(Operator)


Der Code ist IMHO legal, wie andere auch schon bemerkten, gibt es Compiler die damit umgehen können.

@Dirk22
Es ist ein alt bekanntes Problem, daß der VC 6 kein Standard compatibler C++ Compiler ist. Eigentlich ist er sogar nur ein C Compiler mit Klassenunterstützung, der ganze Templatekram wird so abartig schlecht unterstützt, daß es eher ein Leid ist. Angeblich soll sich das in VC 7 leicht geändert haben, aber ich geb dafür kein Geld aus, weil - völlig losgelöst von irgendwelchen esoterischen Überlegungen - die Entwicklung der OpenSource Compiler hier Microsoft eindeutig voraus ist. Wozu also geld für Bugs ausgeben?
Ganz abgesehen davon erspart man sich eine Menge Portierungsprobleme, wenn man direkt auf einen Compiler der gcc Linie geht, weil er quasi auf allen Platformen verfügbar ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
31.01.2004, 13:32 Uhr
0xdeadbeef
Gott
(Operator)


Was gibt der denn eigentlich für eine Fehlermeldung aus? Wär mal ganz spannend zu wissen...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
31.01.2004, 14:31 Uhr
~Dirk22
Gast



Code:
error C2664: '__thiscall std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocato
r<char> > > >::std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >(unsigned int,const cl
ass std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,const class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &)' : Konvertierung des Parameters 1 von 'cl
ass std::istream_iterator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,char,struct std::char_traits<char> >' in 'unsigned int' nicht moeglich
        Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden



Das ist die gleiche Fehlermeldung die Tommix auch schon gepostet hat.

mfg

Dirk

Dieser Post wurde am 31.01.2004 um 15:22 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
31.01.2004, 14:54 Uhr
0xdeadbeef
Gott
(Operator)


Wer lesen kann ist klar im Vorteil

Ja, das sieht tatsächlich aus wie ein Fehler in der STL-Implementierung von Microsoft. Der Konstruktor, der einen vector mit zwei Iteratoren initialisiert, fehlt. Einfachste Lösung: Benutz STLPort (www.stlport.org), damit sollten die Beispiele aus dem Buch funktionieren.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 31.01.2004 um 14:55 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: