2013-03-02 4 views
4

사용자가 읽고 싶은 파일을 묻는 프로그램을 만들고 있는데 myfile.open(fileName)을 시도하면 오류가 발생합니다. " 해당 회선에서 std::basic_ifstream<char, std::char_traits<char> >::open(std::string&)'에 대한 호출과 일치하는 기능이 없습니다. C의 이전 버전에문자열을 매개 변수로 사용하는 ifstream :: open() 함수

string filename; 
cout<<"Enter name of file: "; 
cin>>filename; 
ifstream myFile; 
myFile.open(filename); //where the error occurs. 
myFile.close(); 
+4

annoyingly, cplusplus.com은 C++ 11 이후'open'은'string' 과부하가 없다고 언급하지 않지만 cppreference.com *은 분명히 그렇게합니다. – us2012

답변

11

++ (C++ 03) open() 대신 std::string의 첫번째 매개 변수 만 const char * 걸린다. 그 다음이 될 것입니다 전화의 올바른 방법 : 현재 C에서

myFile.open(filename.c_str()); 

++ (C++ 11) 그 코드는하지만, 괜찮습니다, 그래서 당신은 그것에 대한 지원을 활성화하기 위해 컴파일러를 말할 수 있는지.

+0

짝수 CodeBlocks는 문자열 변수를 "open"메서드에 전달하는 것을 지원하지 않습니다. 작동시키기 위해 ".c_str()"을 사용해야했습니다. – Quoyo

관련 문제