Ответ 1
setw
не является липким, поэтому вы должны сказать это каждый раз:
cout << setfill('0') << setw(3) << 8 << " "
<< setw(3) << 9 << endl;
Должен быть тривиальный вопрос, но обнаружил, что setw применяется только к его непосредственному следующему выводу и не уверен, как разрешить его применять ко всему следующему выводу.
Например, для следующей строки кода
cout<<setw(3)<<setfill('0')<<8<<" "<<9<<endl;
или
cout.width(3);
cout.fill('0');
cout<<8<<" "<<9<<endl;
Я хочу, чтобы на выходе был 008 009
вместо 008 9
setw
не является липким, поэтому вы должны сказать это каждый раз:
cout << setfill('0') << setw(3) << 8 << " "
<< setw(3) << 9 << endl;
Написание длинной std:: setw (14) каждый раз занимает много времени, поэтому написал макрос и используется как показано ниже:
Macro:
#define W14 std::setw(14)
Пример # 1: Простое использование:
std::cout << W14 << 8 << W14 << 9 << W14 << "ABC" << W14 << "DEFGHI" << std::endl;
Вывод:
8 9 ABC DEFGHI
Пример # 2: Я решаю вопрос в алгоритме, используя его, как показано ниже, в цикле for:
std::cout
<< W14 << suffixes[i].first.c_str()
<< W14 << suffixes[i - 1].first.c_str()
<< W14 << i
<< W14 << lcp[i] << std::endl;
Выход: красивый, в цикле for:
a$ $ 1 0
ana$ a$ 2 1
anana$ ana$ 3 3
banana$ anana$ 4 0
na$ banana$ 5 0
nana$ na$ 6 2
Хм. Используйте прокси-структуру для этого.
struct setw_all_the_way {
template <typename T> std::ostring &operator << (T &&t) {
return std::cout << std::setw(14) << std::forward<T>(t);
}
};
setw_all_the_way << ...;