Borland error that works in Microsoft: Couldn't find a match for 'ifstream::open'
c++, c++builder, compiler-errors, ifstream
Solution
Before C++11, `std::ifstream::open` required a `const char *`. Use this.
words.open( file.c_str() );
Problem
I want to read in a text file that has the name: abc.txt The text file contains just a simple a, b, and c, each on their own line. When I compile this using a Microsoft compiler, it compiles with no problem at all and I get output that I expect (see below): ``` a b c (blank line here) ``` Here's the Borland compile line that I'm using: bcc32 -w -ebor.exe main.cpp Here's my main.cpp file that I'm using: main.cpp ``` #include <iostream> #include <fstream> #include <string> void printout(const std::string &file); int main(void) { printout("abc.txt"); return 0; } void printout(const std::string &file) { std::ifstream words; std::string str; words.open(file); while(!words.eof()) { std::getline(words, str); std::cout << str << "\n"; } words.close(); } ``` The exact error that I'm getting in Borland is as follows: Error E2285 main.cpp 17: Could not find a match for 'ifstream::open(const std::string)' in function printout(const std::string &) I'm also getting a warning, but it seems like the only reason it's happening is due to the error preventing 'file' from being used: Warning W8057 main.cpp 26: Parameter 'file' is never used in function printout(const std::string &) Any help would be most appreciated, thank you.