Bonjour à tous!
Étant donné le code suivant:
Si on enlève les parenthèses qui entourent "std::istreambuf_iterator<char>()". Avec Visual C++ 2005, il y a une erreur à l'éditeur de liens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include <fstream> #include <iostream> #include <string> #include <iterator> int main () { std::ifstream In ( "MonFichier.txt" ); std::string MaChaine ( std::istreambuf_iterator<char>( In ), (std::istreambuf_iterator<char>()) ); std::cout << MaChaine; }
Avec gcc, ça passe à la compilation, avec un warning (je ne l'ai pas avec moi présentement), mais le programme ne fait pas du tout le résultat attendu par celui-ci.error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl MaChaine(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::istreambuf_iterator<char,struct std::char_traits<char> > (__cdecl*)(void))" (?MaChaine@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std @@V?$istreambuf_iterator@DU?$char_traits@D@std@@@2@P6A?AV32@XZ@Z)
Comment cela se fait-il que les parenthèses, qui entourent "std::istreambuf_iterator<char>()", ne sont pas facultatives?
Merci,
Mathieu
Partager