이 코드에는 몇 가지 문제점이 있습니다. 먼저, 문자열 binary
에 =
부호 (binary = remainder
)를 사용하여 지정합니다. 당신이 쓰려고했던 것은 아마도 binary += remainder
이었고 나머지를 문자열에 추가했습니다.
두 번째 문제는 해당 행에도 있습니다. string::operator=
과 string::operator+=
모두 char를 사용하는 오버로드가 있습니다. 이러한 오버로드는 int를 전달할 때 호출됩니다. 따라서 아스키 값이 0 또는 1 인 문자, 즉 물음표 문자로 문자열이 설정됩니다.이 문자는 찾고자하는 문자가 아닙니다. std::to_string
을 사용하면 int
을 쉽게 문자열로 변환 할 수 있습니다. 또는 형식을 제어 할 수있는 수준이 필요한 경우 this answer과 같이 std::ostringstream
을 사용할 수 있습니다.
즉, binary = remainder;
을 binary += std::to_string(remainder)
으로 변경하십시오.
세 번째 문제 : while
루프 내에 return 문이 있습니다. num
의 크기가 아무리 크면 루프의 한 반복 후에 함수가 반환됩니다. 해당 return 문을 제거하면 convert
함수 맨 끝에 하나만 있습니다.
코드'return binary;'while '은 첫 번째 루프에서 돌아갑니다. 왜 그런거야? – aghilpro
죄송합니다. 문제가 발생한 부분인지 파악하려고했습니다. 나는 그것을 제거하려고 노력했지만 같은 문제가 발생합니다. – CuriousCoder97
정수 값을 문자열로 변환하지 않고 문자열에 할당하려고합니다. 이것은 주요 문제입니다. 난 당신이 코드를 고정 후 다른 논리적 오류를 고칠 수 있다고 생각합니다. :) –