cout이 서명되지 않은 문자를 인쇄하지 못하는 문제: 문제 해결
C에서는 cout이 서명되지 않은 문자를 인쇄하지 않는 문제가 자주 발생합니다. 이를 이해하기 위해 제공된 코드 예제를 분석해 보겠습니다.
#include<iostream> #include<stdio.h> using namespace std; main() { unsigned char a; a = 1; printf("%d", a); cout << a; }
이 코드에서 부호 없는 char 변수 a에는 값 1이 할당됩니다. printf를 사용하여 a를 인쇄하면 결과는 "1"입니다. 그러나 cout << a는 무작위로 보이는 문자를 표시합니다.
이러한 불일치의 이유는 unsigned char이 0부터 255까지의 값을 저장할 수 있기 때문입니다. a가 1인 경우 인쇄할 수 없는 ASCII 문자 'SOH'(시작 부분)에 해당합니다. 표제). printf는 cout과 다르게 인쇄할 수 없는 문자를 처리합니다.
문자가 인쇄 가능한지 확인하려면 std::isprint 함수를 사용하세요.
std::cout << std::isprint(a) << std::endl;
이렇게 하면 "0"이 인쇄되어 다음을 나타냅니다. 'SOH'는 인쇄할 수 없습니다.
cout이 1을 인쇄하도록 강제하려면 a를 unsigned에 캐스팅합니다. 정수:
cout << static_cast<unsigned>(a) << std::endl;
이렇게 하면 "1"이 성공적으로 인쇄됩니다.
인쇄할 수 없는 문자를 처리할 때 printf와 cout의 근본적인 차이점을 이해하는 것이 이 문제를 해결하는 데 중요합니다. 또한 std::isprint는 문자를 사람이 읽을 수 있는 형식으로 인쇄해야 하는지 여부를 결정하는 데 도움이 될 수 있습니다.
위 내용은 C에서 `cout`이 부호 없는 문자를 올바르게 인쇄하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!