오류 C2679 : 바이너리 '>>': 'std :: string'유형의 오른쪽 오페라를 사용하는 연산자가 없습니다 (또는 허용 가능한 변환이 없습니다)

StackOverflow https://stackoverflow.com/questions/1631338

문제

이미 누군가가 요청한대로 제목과 혼동하지 말고 다른 맥락을 위해

Visual C ++ 컴파일러 (vs2008)의 아래 코드는 컴파일되지 않고 대신이 예외가 발생합니다.

std::ifstream input (fileName);   

while (input) {
  string s;
  input >> s;
  std::cout << s << std::endl;
};

그러나이 코드는 Cygwin G ++에서 잘 컴파일됩니다. 이견있는 사람?

도움이 되었습니까?

해결책

다음 헤더를 모두 포함 시켰습니까?

  • <fstream>
  • <istream>
  • <iostream>
  • <string>

내 생각에 당신은 잊었을 것입니다 <string>.

참고 사항 : 그럴 것입니다 std::cout 그리고 std::endl.

다른 팁

추가 @SBI 대답, 제 경우에는 차이가 포함되었습니다 <string> 대신에 <string.h> (VS 2017에 따라).

다음 답변을 참조하십시오. 비슷한 사례 답변

include <string>

문자열 헤더 파일을 포함 시키십시오 <iostream> 파일. 일부 컴파일러에서도 작동합니다 <string> 컴파일러에 대한 설정은 다르기 때문에 OBJ 파일을 생성하기 위해 '#'기호로 시작하는 전처리 파일을 읽는 것이 담당하는 컴파일러이기 때문입니다.

다른 사람들이 말한 것 외에도. 내 응용 프로그램에서 다음과 같은 코드가 필요했습니다.

std::cout << s.c_str() << std::endl;

이에 대한 또 다른 해결 방법은 프로젝트 속성으로 이동하는 것입니다 -> 일반 -> 문자 세트는 "UES 멀티 바이트 문자 세트"를 선택하는 것입니다 (문자열을 출력하기 위해 c_str ()를 사용할 필요가 없습니다).

MBC 사용에는 단점이 있으므로 소프트웨어를 현지화 할 계획이라면 이에 반대 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top