>백엔드 개발 >C++ >내 `ifstream::open()`이 Dev-C에서는 '일치하는 함수 없음'으로 인해 실패하지만 Visual Studio에서는 실패하는 이유는 무엇입니까?

내 `ifstream::open()`이 Dev-C에서는 '일치하는 함수 없음'으로 인해 실패하지만 Visual Studio에서는 실패하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-03 00:26:11769검색

Why Does My `ifstream::open()` Fail with

"No Matching Function - ifstream open() 오류" 이해

제공된 C 코드에서 "No Matching Function for call" 오류 'std::basic_ifstream::open(std::string&)' "는 문자열 리터럴을 사용하여 파일을 열려고 시도할 때 발생합니다. 논쟁. 이 오류는 VS가 아닌 dev cpp로 컴파일할 때 발생하며, 이는 플랫폼별 동작을 나타냅니다.

오류 해결

오류를 해결하려면 파일 열기 줄을 수정하세요. 다음과 같습니다:

file.open(name.c_str());

또는 생성자를 사용하여 파일을 구성하고 열 수 있습니다. stream:

std::ifstream file(name.c_str());

C 11 이상에서는 std::string 인수를 사용하여 파일을 열 수 있는 지원이 도입되었습니다. 그러나 dev cpp에서 사용되는 이전 버전의 C는 이 기능을 지원하지 않습니다.

추가 수정

파일 열기 수정 외에도 다음을 수행하는 것이 좋습니다.

  • 다음을 사용하여 loadNumbersFromFile()에 인수를 const 참조로 전달합니다. std::string const&는 함수에 의해 수정되지 않음을 나타냅니다.
  • numeric_limits::max() 값 및 구분 기호 'n'과 함께ignore() 메서드를 사용하여 선행 공백을 건너뜁니다. 파일에서 숫자 값만 읽습니다.

위 내용은 내 `ifstream::open()`이 Dev-C에서는 '일치하는 함수 없음'으로 인해 실패하지만 Visual Studio에서는 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.