ctime()에 의해 반환된 문자열에 줄바꿈이 포함되어 있는 이유는 무엇입니까?
에 의해 문자열이 반환되는 이유는 무엇입니까?ctime()
줄바꿈을 하다0x0A
( )을 마지막 글자로요?예를 들어 다음과 같은 코드입니다.
#include <iostream>
#include <cstdlib>
int main(int argc, char* argv[])
{
time_t now;
time(&now);
char* time_str = ctime(&now);
std::cout << time_str << "why is this on a new line?" << std::endl;
return 0;
}
...다음 출력을 출력합니다.
$ ./time.exe
Wed Oct 23 14:52:29 2013
why is this on a new line?
$
큰 문제는 아닙니다.문자열에서 마지막 바이트를 삭제할 수 있는데 왜ctime()
애초에 거기에 놔둘까?
C99 논거에 따르면, 새로운 라인은 기존의 관행 때문에 존재하며, 이는 역사적 이유로 말하는 것과 같다고 생각합니다.
국제표준의 근거 - 프로그래밍 언어 - C © 7.23.3.1
asctime
기능.이 함수의 명칭은 ASCII 종속성을 기준서에서 제거한다는 원칙과 상충됨을 시사하지만, 그 명칭은 선행기술로 인해 유지되었다.기존 관행과 동일한 이유로 문자열 형식에서 줄바꿈 문자를 삭제하자는 제안은 채택되지 않았습니다.
이것은 에 대해 설명합니다.asctime
단, 그 이후로는ctime
와 동등하다asctime(localtime(timer))
그래서 같은 규칙이 적용됩니다.
POSIX Standard는 과거의 호환성을 주장하고 있습니다.
이전 구현과의 호환성을 위해 [asctime]이 포함되어 있습니다.최대의 휴대성을 실현하려면 , 애플리케이션은 strftime()을 사용할 필요가 있습니다.
오래된 구현과의 호환성을 위해 포함되어 있는 것을 고려하면 일부 오래된 라이브러리가 구현되어 있다고 가정하는 것이 타당합니다.asctime
마지막에 새로운 행을 붙여서
이 동작은 ISO 9899:1990 사양에 정의된 대로 필요합니다.
7.12.3.1 The asctime function
The asctime function converts the broken-down time in the structure
pointed to by timeptr into a string in the form
Sun Sep 16 01:03:52 1973\n\0
7.12.3.2 The ctime function
The ctime function converts the calendar time pointed to by timer to
local time in the form of a string. It is equivalent to
asctime(localtime(timer))
원래 Unix에서 날짜 프로그램을 구현해야 했기 때문일 수 있습니다. (shell의 줄 바꿈)그래서 아마 역사적인 이유일 것이다.
원하는 형식(새 행이 없는 형식)을 사용하려면strftime()
대신.형식 문자열"%c"
줄 바꿈 없이 대략 같은 형식을 제공합니다.
그asctime()
man 페이지에는 반환된 문자열에 끝 늘 문자 앞에 끝 줄바꿈 문자가 있음을 나타냅니다(강조하지 않습니다).이 정보가 에 존재하지 않는 이유ctime
man page는 미스터리다.
언급URL : https://stackoverflow.com/questions/19543997/why-does-the-string-returned-by-ctime-contain-a-line-feed
'programing' 카테고리의 다른 글
makefile:4:** 구분자가 없습니다.이제 그만 (0) | 2022.07.14 |
---|---|
Vuetify 색상 테마 변경이 작동하지 않음 (0) | 2022.07.14 |
메서드 반환 유형을 범용으로 만들려면 어떻게 해야 합니까? (0) | 2022.07.14 |
Completable의 차이점미래, 미래 및 RxJava의 관측 가능 (0) | 2022.07.14 |
RouteUpdate 이전 vue-router가 전환 시 이전 매개 변수를 사용함 (0) | 2022.07.12 |