song3175   1년 전

이 문제를 풀기 위해 해쉬맵에 대해서 공부를 조금 했는데 해쉬맵의 value 값을 printf로 출력을 하려고 하면 

 [Error] cannot pass objects of non-trivially-copyable type 'std::map, std::basic_string >::mapped_type {aka class std::basic_string}' through '...' 

이런 오류가 뜨더라고요.. 참고로 dev c++ 사용중이고 cout 으로 바꿔서 출력하니까 되네요

왜 이런지 알려주실수 있나요??

pill27211   1년 전

C스타일의 문자열(끝에 '\0'이 삽입되는 방식)과 c++ string(문자열 '클래스')은 엄연히 다릅니다. 따라서 단순히 printf("%s",account[id]); 와 같이 해서는 printf()가 제대로 읽어들일 수 없죠. 따라서 c++의 string을 printf()로 출력 하기 위해선 string에 내장된 C타입 변환 함수를 통해 출력 해 주어야 합니다.

printf("%s", account[id].c_str());

댓글을 작성하려면 로그인해야 합니다.