Показать сообщение отдельно

  #24  
Старый 16.04.2019, 23:21
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

C++:





Код:
std
::
string
formatString
(
const
char
*
fmt
,
.
.
.
)
{
va_list args
;
va_start
(
args
,
fmt
)
;
std
::
vector

v
(
1024
)
;
while
(
true
)
{
va_list args2
;
va_copy
(
args2
,
args
)
;
int
res
=
vsnprintf
(
v
.
data
(
)
,
v
.
size
(
)
,
fmt
,
args2
)
;
if
(
(
res
>=
0
)
&&
(
res

(
v
.
size
(
)
)
)
)
{
va_end
(
args
)
;
va_end
(
args2
)
;
return
std
::
string
(
v
.
data
(
)
)
;
}
size_t size
;
if
(
res

(
res
)
+
1
;
v
.
clear
(
)
;
v
.
resize
(
size
)
;
va_end
(
args2
)
;
}
}


Не совсем для SF , но может кому и пригодиться.

Для тех кому не нравится форматировать строки через массив чар.

Автор вроде как : 5nw .

Пример :

C++:





Код:
int
iA
=
1
;
float
fA
=
2.0
;
std
::
string sA
=
"privet"
;
std
::
string myVar
=
formatString
(
"int : %i , float : %f , string : %s"
,
iA
,
fA
,
sA
)
;
 
Ответить с цитированием