![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
sprintf: форматированный вывод, как?
Надо сделать так, чтоб 2-ая колонка была выровняна по левому краю: row_11111 row_dsfgabcde row_12 row_dfgsdabcded row_123345000 row_abcdesdcfsdf row_1234 row_abcdewer row_12345 row_abcde Это сообщение отредактировал(а) Alca - 26.3.2009, 18:10 |
|||
|
||||
Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
Добавляй '\t' или "\t\t" в начале каждой строки второй колонки
|
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Съезжает строка: row_11111 row_dsfgabcde row_12 row_dfgsdabcded row_123345000 row_abcdesdcfsdf row_1234 row_abcdewer row_12345 row_abcde <<<<<<<<<<<<< |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
|
|||
|
||||
Acer |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
У меня так не работает... А вот тако вот:
Только тут придется определять длинну строки, чтобы поставить достаточное количество пробелов... тут написанно, как оно должно работать. |
||||||
|
|||||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
||||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Не %-10s а %+10s.
Поставил для каждой строки свой интервал (+7s, +3s, +5s, ...) - в MessageBox одна строка вылазит, а когда скопировал содержимое бокса в файл, то вылазит другая строка... ![]() Добавлено через 2 минуты и 43 секунды
С++ Builder 6.0, WinXP SP3 Это сообщение отредактировал(а) Alca - 26.3.2009, 18:47 |
|||
|
||||
Acer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
ОС - WinXP, компилятор - GCC. В результате получается вывод строк без форматирования. То есть не в виде таблицы. Я сделал вот как:
То есть спецификатор %-10s устанавливается для пробелов. Тогда форматируется. Пробелы выводятся перед вторым столбцом Это сообщение отредактировал(а) Acer - 26.3.2009, 18:51 |
||||
|
|||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
||||
|
||||
Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
Alca, какой код такое вызывает?
|
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Это я делаю свою реализацию assert-a... |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
Результаты теста: http://codepad.org/dRQXcMhm
|
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
А ты поробуй с двумя, тремя колонками и чтоб строки были разной длины. Добавлено через 4 минуты и 29 секунд Мне хотя бы чтоб в мсжбоксе нормально выводило ![]() |
|||
|
||||
586 |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
http://codepad.org/3mupZOkM
Там шрифт не моноширинный (т.е. буквы разного размера). Это сообщение отредактировал(а) 586 - 26.3.2009, 19:22 |
||||||
|
|||||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
может Вам снова С++ вариант подойдёт ![]()
Сначала Вы устанавливаете ширину поля, а потом уже записываете внутрь "поля" переменную. С помощью модификатора left происходит выравнивание по левой границе поля. По правой границе - right Это сообщение отредактировал(а) zim22 - 26.3.2009, 20:51 |
|||
|
||||
inside_pointer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
там проблем никаких, вот здесь просто, если текст выходит за отведённую границу поля, то её приоритет выше и лишнее отбрасывается
Присоединённый файл ( Кол-во скачиваний: 7 ) ![]() |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
И где здесь форматирование? |
|||
|
||||
inside_pointer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
какое форматирование ?
|
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
sprintf: форматированный вывод, выравнивание колонки
|
|||
|
||||
inside_pointer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
а зачем её выравнивать, она всегда будет выравнена с помощью первой
у тебя же строчки съезжают из-за первой колонки, а не из-за второй |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Ты попробуй сделать мсжбокс с несколькими колонками и чтоб строки были раЗной длины... ![]() Это сообщение отредактировал(а) Alca - 29.3.2009, 15:51 |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
И с разными шрифтами...
|
|||
|
||||
inside_pointer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
так тут две колонки, если тебе три надо, ты должен выравнивать и первую и вторую, но не третью
а для мсджбокс нужно назначать выравнивание, если там есть параметры, единый формат окна для всех сообщений а если нету, то перед помещением отформатированной строки, нужно её поместить в отформатированную область, а потом эту область закидывать в мсджбокс |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |