오류 C2679 : 바이너리 '>>': 'std :: string'유형의 오른쪽 오페라를 사용하는 연산자가 없습니다 (또는 허용 가능한 변환이 없습니다)
-
06-07-2019 - |
문제
이미 누군가가 요청한대로 제목과 혼동하지 말고 다른 맥락을 위해
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 사용에는 단점이 있으므로 소프트웨어를 현지화 할 계획이라면 이에 반대 할 것입니다.
제휴하지 않습니다 StackOverflow