Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 467
#1

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

31.10.2013, 11:09. Просмотров 1320. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2013, 11:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ограничение ширины строки при выводе в консоль (C++):

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

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

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

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

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

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

26
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
31.10.2013, 11:13 #2
dimakozyr, Никак. Руками только.
1
eocron
Кактус
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
31.10.2013, 11:20 #3
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
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 467
31.10.2013, 11:30  [ТС] #4
Цитата Сообщение от eocron Посмотреть сообщение
Примерно так.
Ээ.. и это все? Очень странно, но работает
Просто это тестовое задание в крутую фирму

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

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
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 467
31.10.2013, 11:40  [ТС] #6
А можно как-то сделать, чтобы слова не обрезались?
0
Миниатюры
Ограничение ширины строки при выводе в консоль  
eocron
Кактус
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
31.10.2013, 11:42 #7
Это так сразу не напишу, конечно, но я бы сделал в лоб: массив из слов и всякие манипуляции с максимальной выборкой из это массива.

Не по теме:

что за фирма?

1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
31.10.2013, 11:56 #8
dimakozyr, Т.е. еще и переносы замутить? Однако.) Может сами попытаетесь сделать?
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 467
31.10.2013, 11:58  [ТС] #9
Цитата Сообщение от ForEveR Посмотреть сообщение
Может сами попытаетесь сделать?
Да уже пытаюсь
0
SatanaXIII
31.10.2013, 12:02
  #10

Не по теме:

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

0
Tulosba
31.10.2013, 12:03
  #11

Не по теме:

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

1
SatanaXIII
31.10.2013, 12:11
  #12

Не по теме:

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

0
Tulosba
31.10.2013, 12:22
  #13

Не по теме:

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

0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
31.10.2013, 12:48 #14
Понимаю, что проблема решена, но я долго мучался что бы написать более менее приличный код без лишних циферок и введения дополнительных переменных. Так что прошу сильно не бить если что не так.
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
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 467
31.10.2013, 13:06  [ТС] #15
Цитата Сообщение от Ilot Посмотреть сообщение
Понимаю, что проблема решена, но я долго мучался что бы написать более менее приличный код без лишних циферок и введения дополнительных переменных. Так что прошу сильно не бить если что не так.
Прикольно, все работает
Но она еще не решена, я сейчас мучаюсь, чтоб слова не обрезались
0
31.10.2013, 13:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2013, 13:06
Привет! Вот еще темы с ответами:

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

Заставить консоль всплывать поверх окон при выводе новой информации - C++
Добрый день, Подскажите как реализовать всплытие консоли поверх всех окон? Пишу программу для тестирования, которая будет рыться...

При выводе на консоль выделить заданную последовательность чисел в матрице скобками - C++
Помогите сделать скобки, в формате как на рисунке: // Matrisa.cpp: определяет точку входа для консольного приложения. // ...

Как убрать лишние символы при выводе в консоль списка файлов? - C++
Поясните, пожалуйста. Собираю кроссплатформенные методы, для работы с файлами. Взял для разбора такой метод. Всё работает, только вот...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru