Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
 Аватар для dimakozyr
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 560

Ограничение ширины строки при выводе в консоль

31.10.2013, 11:09. Показов 4853. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Класс выводит строку в консоли.
Как сделать, чтобы ширина выводимых строк была равна characterWidth = 40,
т.е. после 40 символов был перенос на новую строку?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string>
#include <iostream>
 
class StringProcessing {
  public:
      StringProcessing() : characterWidth(40),
                     textToBeFormatted("NULL") {}
      
      inline void StringProcessing::initString() {
          textToBeFormatted =
              "text    some text   some text some text   some text some text"
              "text some text  some text    some text some text some text"
              "text    some      text some    text some   text some text some text"
              "text some  text some    text some    text some text some text"
              "text   some     text some text some   text some text some text";
      }
 
      inline void displayString()
        { std::cout << textToBeFormatted << std::endl; }
  private:    
      int characterWidth;
      std::string textToBeFormatted;
};
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.10.2013, 11:09
Ответы с готовыми решениями:

Пропадают строки при выводе в консоль
куда-то пропадают строки. например: for(int q=0;q&lt;10;q++){ cout&lt;&lt;q&lt;&lt;&quot;-q&quot;; for(int...

При выводе строки string в консоль, символы написанные кириллицей отображаются неправильно
Программа не работает как надо с кириллицей в строке типа string. Суть программы: определение минимального размера слова и последующий...

Кирилица отображается нормально при выводе из программы, но иероглифы при вводе в консоль
Что надо подключить что бы в консоли писать русскими буквами? cin &gt;&gt; kol; cin &gt;&gt; x; cout &lt;&lt; &quot;У вас есть &quot; &lt;&lt;...

26
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
31.10.2013, 11:13
dimakozyr, Никак. Руками только.
1
Кактус
 Аватар для eocron
67 / 67 / 19
Регистрация: 23.05.2012
Сообщений: 342
31.10.2013, 11:20
C++
1
2
for(int i = 0; i < s.length()/40 + (bool)(s.length()%40);i++)
   cout<< s.substr(i*40,40)<<endl;
Примерно так.
1
 Аватар для dimakozyr
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 560
31.10.2013, 11:30  [ТС]
Цитата Сообщение от eocron Посмотреть сообщение
Примерно так.
Ээ.. и это все? Очень странно, но работает
Просто это тестовое задание в крутую фирму

Добавлено через 1 минуту
А как здесь сделать выравнивание текста по заданной ширине (40 символов)?
Т.е. добавить пробелы, где это необходимо
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
31.10.2013, 11:34
Что-нибудь типа

C++
1
2
3
4
5
6
7
8
      inline void displayString()
      {
         const std::string& s = textToBeFormatted;
         for (int i = 0; i < s.length() / 40 + (bool)(s.length() % 40); ++i)
         {
            std::cout << std::left << std::setfill(' ') << std::setw(40) << s.substr(i * 40, 40) << std::endl;
         }
      }
1
 Аватар для dimakozyr
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 560
31.10.2013, 11:40  [ТС]
А можно как-то сделать, чтобы слова не обрезались?
Миниатюры
Ограничение ширины строки при выводе в консоль  
0
Кактус
 Аватар для eocron
67 / 67 / 19
Регистрация: 23.05.2012
Сообщений: 342
31.10.2013, 11:42
Это так сразу не напишу, конечно, но я бы сделал в лоб: массив из слов и всякие манипуляции с максимальной выборкой из это массива.

Не по теме:

что за фирма?

1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
31.10.2013, 11:56
dimakozyr, Т.е. еще и переносы замутить? Однако.) Может сами попытаетесь сделать?
1
 Аватар для dimakozyr
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 560
31.10.2013, 11:58  [ТС]
Цитата Сообщение от ForEveR Посмотреть сообщение
Может сами попытаетесь сделать?
Да уже пытаюсь
0
31.10.2013, 12:02

Не по теме:

dimakozyr, а вы потом часть зарплаты на развитие форума отдавайте. :D

0
31.10.2013, 12:03

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
Т.е. еще и переносы замутить?
Еще и на слога разбивать. Хотя в русском языке вроде как разрешили переносить в любом месте слова.
Цитата Сообщение от eocron Посмотреть сообщение
что за фирма?
Наверное MS решила написать новый блокнот с продвинутым режимом "word wrap"

1
31.10.2013, 12:11

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Хотя в русском языке вроде как разрешили переносить в любом месте слова.
Действительно? =-O
А где такое можно почитать?

0
31.10.2013, 12:22

Не по теме:

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Действительно?
А где такое можно почитать?
Черт его знает. Слышал пару лет назад от знакомого издателя. Может пошутил, конечно.

0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2222 / 1424 / 419
Регистрация: 16.05.2013
Сообщений: 3,639
Записей в блоге: 6
31.10.2013, 12:48
Понимаю, что проблема решена, но я долго мучался что бы написать более менее приличный код без лишних циферок и введения дополнительных переменных. Так что прошу сильно не бить если что не так.
C++
1
2
3
4
5
6
7
8
9
10
void displayString()
{
    string::iterator strIter = textToBeFormatted.begin();
    while(strIter!= textToBeFormatted.end())
    {
        cout.put(*strIter++);
        if (!((strIter - textToBeFormatted.begin()) % characterWidth))
            cout.put('\n');
    }
}
1
 Аватар для dimakozyr
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 560
31.10.2013, 13:06  [ТС]
Цитата Сообщение от Ilot Посмотреть сообщение
Понимаю, что проблема решена, но я долго мучался что бы написать более менее приличный код без лишних циферок и введения дополнительных переменных. Так что прошу сильно не бить если что не так.
Прикольно, все работает
Но она еще не решена, я сейчас мучаюсь, чтоб слова не обрезались
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2222 / 1424 / 419
Регистрация: 16.05.2013
Сообщений: 3,639
Записей в блоге: 6
31.10.2013, 13:32
Цитата Сообщение от dimakozyr Посмотреть сообщение
Прикольно, все работает
Но она еще не решена, я сейчас мучаюсь, чтоб слова не обрезались
Да как два пальца (только без промежуточных итераторов здесь не обойтись):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    void displayString()
    {
        string::iterator strIter = textToBeFormatted.begin();
        string::iterator temp = strIter;
        while(strIter!= textToBeFormatted.end())
        {
            cout.put(*strIter++);
            if (!((strIter - temp) % characterWidth))
            {
                while((*strIter != ' ' )
                        &&(strIter!= textToBeFormatted.end()))
                    cout.put(*strIter++);
                temp = strIter;
                cout.put('\n');
            }
        }
    }
Добавлено через 4 минуты
p.s. Проблема только с пробелами. Вопрос в том нужно ли инрементировать итератор или нет, но это уже зависит от того как вам нужно. Однако это решается просто (при условии, что пробел один):
C++
1
temp = ++strIter;
1
 Аватар для dimakozyr
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 560
31.10.2013, 13:35  [ТС]
Цитата Сообщение от Ilot Посмотреть сообщение
Да как два пальца (только без промежуточных итераторов здесь не обойтись):
Да, круто. Осталось доделать выравнивание по ширине, но это уже не так сложно
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2222 / 1424 / 419
Регистрация: 16.05.2013
Сообщений: 3,639
Записей в блоге: 6
31.10.2013, 13:41
Цитата Сообщение от dimakozyr Посмотреть сообщение
Да, круто. Осталось доделать выравнивание по ширине, но это уже не так сложно
Благодарю. Четвертый день изучаю STL .
Мне интересно мнение опытных программистов. Сойдет ли такой код при приеме на работу или все-таки он пока корявый?
1
 Аватар для dimakozyr
162 / 29 / 3
Регистрация: 17.08.2013
Сообщений: 560
31.10.2013, 13:45  [ТС]
Цитата Сообщение от Ilot Посмотреть сообщение
Четвертый день изучаю STL .
Четвертый? Я уже 100 страниц Мюссера прочитал, но до сих пор не шарю

Цитата Сообщение от Ilot Посмотреть сообщение
Сойдет ли такой код при приеме на работу или все-таки он пока корявый?
Вполне, крутой код
0
31.10.2013, 13:55

Не по теме:

Цитата Сообщение от dimakozyr Посмотреть сообщение
Четвертый? Я уже 100 страниц Мюссера прочитал, но до сих пор не шарю
Ну так у него основной материал начинается где-то с 5й главы. Так что пока не познакомитесь с алгоритмами не фига не будет понятно.
А вы С++ по чем учили? Мне после Лафоре впринципе по большей части все понятно. Вот только сегодня утром поздно проснулся не успел почитать, а на работе вникнуть не получается. Обычно на работе я пишу код, а дома читаю. А тут такая засада:D...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.10.2013, 13:55
Помогаю со студенческими работами здесь

Интервал времени при выводе в консоль
Здравствуйте,пару дней назад подумал о том, можно ли сделать вывод в консоли информации через &quot;cout&quot; по времени. К примеру у...

Кодировка символов при выводе в консоль.
Код #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;sstream&gt; #include...

Матрицы в си++ реверс при выводе на консоль
Мне нужно чтобы заданная матрица выводилась на экран не с первого элемента, а с последнего, как так сделать ? #include &lt;iostream&gt; ...

Теряется часть информации при выводе в консоль
Я пишу игру Пьяницы, и в цикле происходит вывод информации о номинале карты, сравнении этой карты с другой и т.д. Так получается, что...

Необработанное исключение по адресу при выводе на консоль
Доброго времени суток. #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class YearData { public: int day; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru