std:: vprintf, std:: vfprintf, std:: vsprintf, std:: vsnprintf
|
ν€λ νμΌμ μ μλ¨
<cstdio>
|
||
|
int
vprintf
(
const
char
*
format, std
::
va_list
vlist
)
;
|
(1) | |
|
int
vfprintf
(
std::
FILE
*
stream,
const
char
*
format, std
::
va_list
vlist
)
;
|
(2) | |
|
int
vsprintf
(
char
*
buffer,
const
char
*
format, std
::
va_list
vlist
)
;
|
(3) | |
|
int
vsnprintf
(
char
*
buffer,
std::
size_t
buf_size,
const
char
*
format, std
::
va_list
vlist
)
;
|
(4) | (C++11 μ΄ν) |
vlist λ‘ μ μλ μμΉλ€μμ λ°μ΄ν°λ₯Ό λ‘λνκ³ , μ΄λ₯Ό λ¬Έμμ΄ νμμΌλ‘ λ³νν ν λ€μν μ±ν¬μ κ²°κ³Όλ₯Ό κΈ°λ‘ν©λλ€.
λͺ©μ°¨ |
λ§€κ°λ³μ
| stream | - | μΆλ ₯ν νμΌ μ€νΈλ¦Ό |
| buffer | - | μΆλ ₯ν λ¬Έμ λ¬Έμμ΄μ λν ν¬μΈν° |
| buf_size | - | μ΅λ μΆλ ₯ λ¬Έμ μ |
| format | - | λ°μ΄ν° ν΄μ λ°©λ²μ μ§μ νλ λ μ’ λ£ λ¬Έμ λ¬Έμμ΄μ λν ν¬μΈν° |
| vlist | - | μΆλ ₯ν λ°μ΄ν°λ₯Ό ν¬ν¨νλ κ°λ³ μΈμ λͺ©λ‘ |
format
λ¬Έμμ΄μ μΆλ ₯ μ€νΈλ¦Όμ λ³κ²½ μμ΄ λ³΅μ¬λλ μΌλ° λ°μ΄νΈ λ¬Έμ(
%
μ μΈ)μ λ³ν μ§μ μλ‘ κ΅¬μ±λ©λλ€. κ° λ³ν μ§μ μλ λ€μκ³Ό κ°μ νμμ κ°μ§λλ€:
-
-
μλ‘ μ μΈ
%λ¬Έμμ λλ€.
-
μλ‘ μ μΈ
-
- (μ ν μ¬ν) λ³ν λμμ μμ νλ νλ μ΄μμ νλκ·Έ:
-
-
-: λ³ν κ²°κ³Όκ° νλ λ΄μμ μΌμͺ½ μ λ ¬λ©λλ€ (κΈ°λ³Έκ°μ μ€λ₯Έμͺ½ μ λ ¬). -
+: λΆνΈ μλ λ³ν(signed conversions)μ κ²½μ° κ²°κ³Ό μμ νμ λΆνΈκ° λΆμ΅λλ€ (κΈ°λ³Έμ μΌλ‘λ κ²°κ³Όκ° μμμΌ λλ§ λ§μ΄λμ€ λΆνΈκ° λΆμ). -
space
: λΆνΈ μλ λ³ν κ²°κ³Όκ° λΆνΈ λ¬Έμλ‘ μμνμ§ μκ±°λ λΉμ΄ μλ κ²½μ°, κ²°κ³Ό μμ κ³΅λ°±μ΄ μΆκ°λ©λλ€.
+νλκ·Έκ° μ‘΄μ¬ν κ²½μ° λ¬΄μλ©λλ€. -
#: λ³νμ λ체 νν(alternative form) κ° μνλ©λλ€. μ νν ν¨κ³Όλ μλ νλ₯Ό μ°Έμ‘°νμμμ€. κ·Έλ μ§ μμ κ²½μ° λμμ μ μλμ§ μμ΅λλ€. -
0: μ μ λ° λΆλ μμμ μ«μ λ³νμ κ²½μ°, space λ¬Έμ λμ μ ν μ(0)μ΄ νλλ₯Ό μ±μ°λ λ° μ¬μ©λ©λλ€. μ μ μ«μμ κ²½μ° λͺ μμ μΌλ‘ μ λ°λ(precision)κ° μ§μ λλ©΄ 무μλ©λλ€. λ€λ₯Έ λ³νμμ μ΄ νλκ·Έλ₯Ό μ¬μ©νλ©΄ λμμ΄ μ μλμ§ μμ΅λλ€.-νλκ·Έκ° μ‘΄μ¬ν κ²½μ° λ¬΄μλ©λλ€.
-
-
-
(μ ν μ¬ν)
μ΅μ νλ λλΉλ₯Ό μ§μ νλ μ μ κ° λλ
*. νμν κ²½μ° κ²°κ³Όλ μ€λ₯Έμͺ½ μ λ ¬ μ μΌμͺ½μ, μΌμͺ½ μ λ ¬ μ μ€λ₯Έμͺ½μ (κΈ°λ³Έμ μΌλ‘) 곡백 λ¬Έμλ‘ μ±μμ§λλ€.*κ° μ¬μ©λλ κ²½μ°, λλΉλ int νμ μ μΆκ° μΈμλ‘ μ§μ λλ©°, μ΄ μΈμλ λ³νν μΈμμ μ λ°λλ₯Ό μ 곡νλ μΈμ(μλ κ²½μ°) μμ λνλ©λλ€. μΈμ κ°μ΄ μμμΈ κ²½μ°-νλκ·Έκ° μ§μ λκ³ μμ νλ λλΉκ° μ μ©λ©λλ€ (μ°Έκ³ : μ΄λ μ΅μ λλΉμ΄λ©° κ°μ μ λ μλ¦¬μ§ μμ΅λλ€.).
-
(μ ν μ¬ν)
μ΅μ νλ λλΉλ₯Ό μ§μ νλ μ μ κ° λλ
-
-
(μ νμ )
.λ€μ μ μ μ«μλ*, λλ μ무κ²λ μ€μ§ μμ μ μμΌλ©°, μ΄κ²μ λ³νμ μ λ°λ λ₯Ό μ§μ ν©λλ€.*κ° μ¬μ©λλ κ²½μ°, μ λ°λ λ int νμ μ μΆκ° μΈμλ‘ μ§μ λλ©°, μ΄ μΈμλ λ³νλ μΈμ μμ λνλμ§λ§, μ΅μ νλ λλΉλ₯Ό 곡κΈνλ μΈμκ° μ 곡λ κ²½μ° κ·Έ λ€μ μ΅λλ€. μ΄ μΈμμ κ°μ΄ μμμ΄λ©΄ 무μλ©λλ€. μ«μλ*κ° μ¬μ©λμ§ μμΌλ©΄ μ λ°λλ 0μΌλ‘ κ°μ£Όλ©λλ€. μ λ°λμ μ νν ν¨κ³Όμ λν΄μλ μλ νλ₯Ό μ°Έμ‘°νμμμ€.
-
(μ νμ )
-
- (μ ν μ¬ν) κΈΈμ΄ μμ μ λ μΈμμ ν¬κΈ°λ₯Ό μ§μ ν©λλ€ (λ³ν νμ μ§μ μμ κ²°ν©νμ¬ ν΄λΉ μΈμμ μ νμ μ§μ ν©λλ€).
-
- λ³ν νμ μ§μ μ.
λ€μ νμ μ§μ μλ₯Ό μ¬μ©ν μ μμ΅λλ€:
|
λ³ν
μ§μ μ |
μ€λͺ |
μμ
μΈμ μ ν |
||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| κΈΈμ΄ μμ μβ | hh | h | μμ | l | ll | j | z | t | L | |
| C++11λΆν°λ§ μ¬μ© κ°λ₯β | Yes | Yes | Yes | Yes | Yes | |||||
%
|
리ν°λ΄
%
λ₯Ό μΆλ ₯ν©λλ€. μ 체 λ³ν μ§μ μλ
%%
μ΄μ΄μΌ ν©λλ€.
|
N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
c
|
λ¨μΌ λ¬Έμ λ₯Ό μΆλ ₯ν©λλ€.
|
N/A | N/A |
int
|
std::wint_t
|
N/A | N/A | N/A | N/A | N/A |
s
|
λ¬Έμμ΄ μ κΈ°λ‘ν©λλ€.
|
N/A | N/A |
char
*
|
wchar_t
*
|
N/A | N/A | N/A | N/A | N/A |
d
i
|
λΆνΈ μλ μ μ λ₯Ό 10μ§μ νν [-]dddd λ‘ λ³νν©λλ€.
|
signed
char
|
short
|
int
|
long
|
long
long
|
β»
|
N/A | ||
o
|
λΆνΈ μλ μ μ λ₯Ό 8μ§μ νν oooo λ‘ λ³νν©λλ€.
|
unsigned
char
|
unsigned
short
|
unsigned
int
|
unsigned
long
|
unsigned
long
long
|
std::ptrdiff_t
μ λΆνΈ μλ λ²μ
|
ν΄λΉ μμ | ||
x
X
|
λΆνΈ μλ μ μ λ₯Ό 16μ§μ νν hhhh λ‘ λ³νν©λλ€.
|
N/A | ||||||||
u
|
λΆνΈ μλ μ μ λ₯Ό 10μ§μ νν dddd λ‘ λ³νν©λλ€.
|
N/A | ||||||||
f
F
(C++11)
|
λΆλμμμ μ«μ λ₯Ό [-]ddd.ddd μ€νμΌμ 10μ§μ νκΈ°λ²μΌλ‘ λ³νν©λλ€.
|
N/A | N/A |
double
|
double
(C++11)
|
N/A | N/A | N/A | N/A |
long
double
|
e
E
|
λΆλ μμμ μ«μ λ₯Ό 10μ§ μ§μ νκΈ°λ²μΌλ‘ λ³νν©λλ€.
|
N/A | N/A | N/A | N/A | N/A | N/A | |||
a
A
(C++11) |
λΆλμμμ μ«μ λ₯Ό 16μ§μ μ§μ νκΈ°λ²μΌλ‘ λ³νν©λλ€.
|
N/A | N/A | N/A | N/A | N/A | N/A | |||
g
G
|
λΆλμμμ μ«μ λ₯Ό κ°κ³Ό μ λ°λ μ λ°λΌ μμ§λ² λλ μμ§ μ§μ νκΈ°λ²μΌλ‘ λ³νν©λλ€.
|
ν΄λΉ μμ | ν΄λΉ μμ | ν΄λΉ μμ | ν΄λΉ μμ | ν΄λΉ μμ | ν΄λΉ μμ | |||
n
|
μ΄ ν¨μ νΈμΆλ‘ νμ¬κΉμ§ μ°μ¬μ§ λ¬Έμ μ λ₯Ό λ°νν©λλ€.
|
signed
char
*
|
short
*
|
int
*
|
long
*
|
long
long
*
|
β»
|
N/A | ||
p
|
ꡬν μ μλ λ¬Έμ μνμ€λ₯Ό μμ±νμ¬ pointer λ₯Ό μ μν©λλ€. |
N/A | N/A |
void
*
|
N/A | N/A | N/A | N/A | N/A | N/A |
| μ°Έκ³ μ¬ν | ||||||||||
|
λΆλ μμμ λ³ν ν¨μλ 무νλλ₯Ό
NaN(Not-a-Number)μ
λ³ν μ§μ μ
char , unsigned char , signed char , short , κ·Έλ¦¬κ³ unsigned short λ₯Ό μΆλ ₯νλ λ° μ¬μ©λλ λ³ν μ§μ μλ κΈ°λ³Έ μΈμ μΉκ²© μ μΉκ²©λ νμ μ κΈ°λνμ§λ§, κ°μ μΆλ ₯νκΈ° μ μ char , unsigned char , signed char , short , κ·Έλ¦¬κ³ unsigned short λ‘ λ³νλ©λλ€. κ°λ³ μΈμ ν¨μκ° νΈμΆλ λ λ°μνλ μΉκ²©μΌλ‘ μΈν΄ μ΄λ¬ν νμ μ κ°μ μ λ¬νλ κ²μ μμ ν©λλ€.
κ³ μ λλΉ λ¬Έμ νμ
(
std::int8_t
λ±)μ λν μ¬λ°λ₯Έ λ³ν μ§μ μλ ν€λ
<cinttypes>
μ μ μλμ΄ μμ΅λλ€(λΉλ‘
PRIdMAX
,
PRIuMAX
λ±μ΄
λ©λͺ¨λ¦¬ μ°κΈ° λ³ν μ§μ μ
κ° λ³ν μ§μ μμ λμ μ΄νμλ
μνμ€ ν¬μΈνΈ
κ° μμ΅λλ€; μ΄λ μ¬λ¬
λ³ν μ§μ μκ° μ ν¨νμ§ μμΌλ©΄ λμμ μ μλμ§ μμ΅λλ€. |
||||||||||
λ°νκ°
μ°Έκ³ μ¬ν
μ΄ λͺ¨λ ν¨μλ€μ μ΅μν ν λ² μ΄μ
va_arg
λ₯Ό νΈμΆνλ©°, λ°ν ν
arg
μ κ°μ μ μλμ§ μμ΅λλ€. μ΄λ¬ν ν¨μλ€μ
va_end
λ₯Ό νΈμΆνμ§ μμΌλ©°, μ΄λ νΈμΆμκ° μνν΄μΌ ν©λλ€.
μμ
#include <cstdarg> #include <cstdio> #include <ctime> #include <vector> void debug_log(const char *fmt, ...) { std::time_t t = std::time(nullptr); char time_buf[100]; std::strftime(time_buf, sizeof time_buf, "%DΒ %T", std::gmtime(&t)); std::va_list args1; va_start(args1, fmt); std::va_list args2; va_copy(args2, args1); std::vector<char> buf(1 + std::vsnprintf(nullptr, 0, fmt, args1)); va_end(args1); std::vsnprintf(buf.data(), buf.size(), fmt, args2); va_end(args2); std::printf("%s [debug]:Β %s\n", time_buf, buf.data()); } int main() { debug_log("Logging,Β %d,Β %d,Β %d", 1, 2, 3); }
μΆλ ₯:
04/13/15 15:09:18 [debug]: Logging, 1, 2, 3
μ°Έκ³ νλͺ©
|
(C++11)
|
μμμ΄ μ§μ λ μΆλ ₯μ
stdout
, νμΌ μ€νΈλ¦Ό λλ λ²νΌμ μΆλ ₯ν©λλ€
(ν¨μ) |
|
(C++11)
(C++11)
(C++11)
|
κ°λ³ μΈμ λͺ©λ‘μ μ¬μ©νμ¬
stdin
, νμΌ μ€νΈλ¦Ό λλ λ²νΌμμ
μμμ΄ μ§μ λ μ λ ₯μ μ½μ΅λλ€ (ν¨μ) |
|
type-erased
μΈμ ννμ μ¬μ©νμ¬
μ λμ½λλ₯Ό μ§μνλ stdout λλ νμΌ μ€νΈλ¦Όμ μΆλ ₯ν©λλ€ (ν¨μ) |
|
|
type-erased
μΈμ ννμ μ¬μ©νμ¬
stdout λλ νμΌ μ€νΈλ¦Όμ μΆλ ₯ν©λλ€ (ν¨μ) |
|
|
C λ¬Έμ
λ₯Ό μ°Έμ‘°νμμμ€:
vprintf
,
vfprintf
,
vsprintf
,
vsnprintf
|
|