Ich möchte den Inhalt eines ifstream leseng ++ 4.6.3 Inhalt einer Datei in Zeichenfolge Lesen Parsen Mehrdeutigkeit
#include <vector>
#include <iterator>
#include <fstream>
std::ifstream stream;
std::vector<char> buf(std::istreambuf_iterator<char>(stream),
std::istreambuf_iterator<char>());
Aber dann, wenn ich sage:
if(buf.size())
...
ich einen Fehler
error: request for member 'size' in 'buf', which is of non-class type 'std::vector<char, std::istreambuf_iterator<char, std::char_traits<char> > >(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> > (*)())'
So ist der Compiler denkt, ich bin eine Funktion statt eines vector<char>
erklärt. Wie kann ich es zum Laufen bringen?
ich kompilieren mit -std=c++0x
mit g++-4.6.3
Diese Frage ist mehr über Begriffsklärung Parsen als einer Datei zu lesen.
Ich denke, es ist ein Fall von MVP, IIRC die Lösung dafür ist, den zweiten Parameter in Klammern zu wickeln. – Borgleader
Related: [Most vexing parse] (http://en.wikipedia.org/wiki/Most_vexing_parse). –
@ashoalm Das ist ein falsches Duplikat, das Problem ist nicht, wie man die Datei liest, es ist eine Eigenart der Sprache, wo diese Deklaration als Funktion betrachtet wird, kein Objekt vom Typ std :: vector –
Borgleader