#c #printf
Вопрос:
Я хотел бы вывести некоторый текст с помощью этой sprintf_s
функции. Вот код:
sprintf_s(g_msgbuf, "n
Active Weapon PID: %dn
HitMode: %sn
Armor DT: %dn
Armor DR: %dn",
ActiveWeaponPID,
HitModeStr.c_str(),
cur_dmg_thresh,
cur_dmg_resist
);
Как видно из соображений удобочитаемости, я поместил все параметры в отдельные строки. Проблема в том, что я получаю дополнительные нежелательные символы пробела (вкладки), сгенерированные между параметром строки формата:
Active Weapon PID: 8
HitMode: single
Armor DT: 4
Armor DR: 30
Есть ли способ/параметр/опция для функций sprintf ( sprintf_s
в частности) игнорировать эти избыточные вкладки?
Ответ №1:
Вы можете использовать тот факт, что отдельные строки будут объединены независимо от того, между какими пробелами/новыми строками находятся — "one" "two" "three"
эквивалентно "onetwothree"
sprintf_s(g_msgbuf, "n"
"Active Weapon PID: %dn"
"HitMode: %sn"
"Armor DT: %dn"
"Armor DR: %dn",
ActiveWeaponPID,
HitModeStr.c_str(),
cur_dmg_thresh,
cur_dmg_resist
);
Ответ №2:
Вот пример использования струнного потока C .
#include <iostream>
#include <sstream>
std::stringstream g_msgbuf;
int main()
{
int ActiveWeaponPID{ 4 };
std::string HitMode{ "none" };
int cur_dmg_thresh{ 3 };
int cur_dmg_resist{ 5 };
g_msgbuf
<< "Active Waepon PID: " << ActiveWeaponPID << "n"
<< "HitMode: " << HitMode << "n"
<< "Armor DT: " << cur_dmg_thresh << "n"
<< "Armor DR: " << cur_dmg_resist << "n";
std::cout << g_msgbuf.str();
};
Комментарии:
1. @P Крамер «Вам действительно не нужно было лишнее» после » n «» — боюсь, что здесь Вы ошибаетесь. Когда я удаляю » » в конце каждой строки, я получаю ошибку (если только я не использую решение, предложенное Майком выше). Во — вторых — «printf, sprintf больше не считаются «безопасными»» — да, я знаю, поэтому я использую
sprintf_s
, как вы можете видеть:-)2. Ладно, тогда мне плохо по части»»;) Да, sprintf_s уже намного лучше, я просто больше не привык видеть какие-либо функции печати. Я не собирался говорить вам, что вы были неправы, просто хотел показать вам альтернативу (и мне нравится < Я обновлю комментарий к » » в ответе.