분명히 C++ scanf()
이 cin
보다 좋은 상황이 있다면 printf()
이 cout
보다 실용적인 경우가 있는지 궁금합니다.C++에서 cout보다 printf()를 사용하면 큰 장점이 있습니까?
답변
ostream
인터페이스 (따라서 cout
)를 사용하여 수행 할 수있는 작업은 이전 스타일 printf()
보다 훨씬 우수합니다. 먼저 유형의 안전입니다. 실수로 잘못된 형식의 시퀀스를 사용하면 세분화 위반이 발생하지 않습니다.
예. Posx fstat
함수에 의해 반환 된 struct stat
의 속성을 출력해야한다고 상상해보십시오. 속성의 유형은 시스템 종속 typedef를 사용하여 정의됩니다.
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
/* ... more attributes */
}};
dev_t
과 같은 것은 다른 시스템에 다른 유형 (typedef)입니다. 당신은 당신의 특정 시스템 dev_t
에 그 int
, 말,에 해당 찾고,이 쓸 수 있습니다 :
printf("dev_t=%d", s.st_dev);
을 당신이 정의하는 다른 시스템에 컴파일 할 때, 예를 들어, 시스템에 작동하지만 것 , dev_t
은 int
이 아니지만, 예를 들어 long
일 경우 코드가 컴파일되지만 런타임에는 오류가 발생합니다. 당신이 C++ 스트림을 사용하고 <<
연산자를 오버로드 된 경우
다음 물건은 항상 제대로 작동합니다
cout을 < < "준 dev_t ="< < s.st_dev;
C++ 스트림의 또 다른 중요한 이점은 확장 성입니다. 형식 시퀀스 printf
의 이해를 확장 할 수는 없습니다. 반대로 <<
연산자를 쉽게 오버로드하여 자신의 유형의 객체를 편리하게 인쇄 할 수 있습니다.
짧은 대답 : 항상 !!! C++에서 printf와는 달리 형식 안전성을 제공하므로 항상 printf를 사용하는 것이 좋습니다.
의심의 여지가 거기 cout과 관련된 장점이 있지만 사실 cout은 스레드 안전하지 않습니다 printf 일부 측면에서 우수한 :), 그래서 특히 당신이 멀티 스레드 환경 피하기 등 피하기 디버깅에 ... – Saqlain
- 1. Objective-C의 함수보다 블록을 사용하면 장점이 있습니까?
- 2. Perl이나 Python에 비해 Bash를 사용하면 장점이 있습니까?
- 3. 큰 따옴표를 이스케이프하지 않고 printf를 사용하고 있습니까?
- 4. 최대 절전 모드에서 낙타 구성 요소를 사용하면 장점이 있습니까?
- 5. 코드 프로젝트에서 여러 파일을 사용하면 어떤 장점이 있습니까? (C++)
- 6. git svn clone에서 --no-metadata를 사용하면 장점이 있습니까?
- 7. 선택적 함수 매개 변수와 배열에 대해 parse_str을 사용하면 장점이 있습니까?
- 8. IIFE를 통해 명명 된 함수를 사용하면 장점이 있습니까?
- 9. C# CLR을 사용하면 C# 응용 프로그램에 비해 장점이 있습니까?
- 10. C에서 printf를 사용하여 해당 번호로 인쇄 *
- 11. 이와 같은 수업에 장점이 있습니까? 이고, 어떤 장점이
- 12. 파이썬 클래스에는 어떤 장점이 있습니까?
- 13. LocalBroadcastManager에는 몇 가지 장점이 있습니까?
- 14. JCE Pro - 어떤 장점이 있습니까?
- 15. C에서 포인터를 사용하면 어떤 이점이 있습니까?
- 16. C에서 가장 큰 숫자
- 17. C에서 printf를 사용하는 방법과 내 코드를 인쇄하려면 어떻게해야합니까?
- 18. ExecuteScalar()는 ExecuteReader()보다 장점이 있습니까?
- 19. TypeMock Isolator Essential에는 어떤 장점이 있습니까?
- 20. 구조화되지 않은 데이터에 대한 Mahout이 장점이 있습니까?
- 21. 'Aspect Based Tracing'에 어떤 장점이 있습니까?
- 22. JS보다 HTML5 계산을 사용하는 장점이 있습니까?
- 23. 구성 가능한 제품보다 단순한 제품의 장점이 있습니까
- 24. 데이터를 메모리에 미리로드하는 것은 어떤 장점이 있습니까?
- 25. # C에서 E # C CSS 선택기를 사용하면 성능상의 이점이 있습니까?
- 26. C에서 큰 텍스트 처리 #
- 27. HTML 액션이 장점이 더
- 28. 런타임까지 얼마나 많은 인자가 있는지 모르면 C에서 printf를 사용합니다.
- 29. C에서 printf를 사용하여 이진 검색의 출력 형식을 지정 하시겠습니까?
- 30. 배열의 중앙값을 찾기 위해 2로 나누는 것과 반대되는 비트 연산을 사용하면 장점이 있습니까? 예를 들어
세부 사항을 기억하지 못하기 때문에 완전한 대답을 제공 할 수는 없지만 C++ 표준위원회 위원 (그는 Facebook에서 일하고 있음)이 말한 내용에서 그는 cout이 printf()를 선호한다고 언급했습니다. 스레드와 잘 작동합니다. –
C++의 어떤 상황에서'scanf()'가'cin'보다 더 좋을지 궁금합니다. –
@DaveRager 'scanf()'를 사용하여 특정 문자열을 입력하고 해석하는 것이 더 쉽다는 것을 알게되었습니다. C에있는 주먹 계산기 프로그램의 줄은 다음과 같습니다.'scanf ("% f % c % f", & num1, & op, & num2)'. 'op'는 mathematica 연산자 (+, -, *, /)를 나타내는 변수이며 제대로 사용하면 수십 줄의 쓸데없는 코드를 줄일 수 있습니다. – Jules