program tip

문자열을 여는 파일 경로로 사용하는 C ++ ifstream 오류.

radiobox 2020. 11. 4. 07:50
반응형

문자열을 여는 파일 경로로 사용하는 C ++ ifstream 오류.


나는 가지고있다:

string filename: 
ifstream file(filename);

컴파일러는 ifstream 파일과 문자열이 일치하지 않는다고 불평합니다. 파일 이름을 다른 것으로 변환해야합니까?

오류는 다음과 같습니다.

error: no matching function for call to ‘std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::string&)’
/usr/include/c++/4.4/fstream:454: note: candidates are: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]

변화

ifstream file(filename);

...에

ifstream file(filename.c_str());

생성자 때문에 ifstream소요 const char*아니라 string사전 C ++ 11.


ifstream생성자는 기대 const char*당신이 할 필요가 있으므로, ifstream file(filename.c_str());그것을 작동하게 할 수 있습니다.


C ++-11에서는 std :: string 일 수도 있습니다. 따라서 (c ++-11 설치 및) 프로젝트의 방언을 c ++-11로 변경하면 문제가 해결 될 수 있습니다.

참고 URL : https://stackoverflow.com/questions/6323619/c-ifstream-error-using-string-as-opening-file-path

반응형