Форум программистов, компьютерный форум CyberForum.ru

Равномерное дополнение строки пробелами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Указатели на функции (Прата) - не пойму, как это работает http://www.cyberforum.ru/cpp-beginners/thread1228221.html
Стивен Прата "Язык программирования C++. Лекции и упражнения" 7 глава, стр. 355, листинг 7.18. fun_ptr.cpp // fun_ptr.cpp -- pointers to functions #include <iostream> double betsy(int); double pam(int); // second argument is pointer to a type double function that
C++ Как ограничить поле ввода только одним символом? А двумя? Как ограничить поле ввода только одним символом? А двумя? Например чтобы сразу после нажатия клавиши(двух), программа переходила к следующей операции, не ожидая нажатия "ентер", либо же не давала ввести символов больше положенного? Как сделать так, чтобы можно было напечатать в строку ввода только определённые символы, например y/n? Спасибо. http://www.cyberforum.ru/cpp-beginners/thread1228219.html
C++ Невозможно запустить программу. Отсутствует libiconv-2.dll
Запуск программы невозможен так как на компьютере отсутствует libiconv-2.dll.попробуйте переустановить программу Добавлено через 36 секунд Что нужно сделать?
C++ Неверная обработка данных при вводе двух и более величин
У меня по коду все правильно, при вводе одного значения n вывод верный. Если ввод включает 2 и больше значений n, то первое значение, остальные такое чувство, что не проверяет программа. Вот код: #include <iostream> #include <vector> #include <cmath> using namespace std; int main() {
C++ Зависание потоков. Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread1228168.html
Всем еще раз привет. Очень прошу помощи. Пишу на С++ под винду, с учетом специфики проекта выбор остановился на boost library. Пишу многопоточное приложение следующего вида: создается несколько потоков. далее потоки поочереди читают файл, выполняют какую-то длительную логику и поочереди записывают в другой файл. т.е. здесь важна очередность записи в файл, каждый поток ждет предыдущего:...
C++ Анализатор входящих сообщений сторонних ПО и сервисов В WinAPI не силен, однако необходимо написать программу на С++, анализирующую входящие сообщения какого-нибудь сервиса обмена сообщениями, например вконтакте. По самому анализатору наброски есть, однако что абсолютно не могу понять - как моей программе получить входящие сообщения? Либо нужно как-то следить за открытым в другом окне браузером и отлавливать входящие, либо еще как-то... В общем... подробнее

Показать сообщение отдельно
OverDozero
 Аватар для OverDozero
98 / 98 / 6
Регистрация: 07.04.2011
Сообщений: 517
18.07.2014, 20:34  [ТС]     Равномерное дополнение строки пробелами
Получилось что-то типа такого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
 
// возвращает последний пробел в строке str, начиная с позиции start, если пробелов больше нет то -1
int get_last_space( char *str, int start )
{
    for ( int i = start; str[i]; ++i )
        if ( str[i] == ' ' )
            if ( str[i + 1] != ' ' )
                return i + 1;
            
    return -1;
}
 
// вставляет пробел в строку str, в позицию pos
void insert_space( char *str, int pos )
{
    int len = strlen(str);
    
    str[len + 1] = '\0'; // признак конца строки
    for ( int i = len; i > pos; --i )
        str[i] = str[i - 1];        
    str[pos] = ' ';
}
 
// дополняет стоку пробелами
void format_string(char *str, unsigned int len )
{
    int pos = 0;
    
    if ( get_last_space(str, 0) == -1 ) // если пробелов нет, ничего не делаем
        return;
 
    while ( strlen(str) < len ) // пока длина строки не достигнет нужного размера
    {
        pos = get_last_space(str, pos); // получаем пробел с позиции pos
        
        if ( pos != -1 ) // пока не достигнут конец строки, вставляем пробелы
        {
            insert_space(str, pos); 
            pos += 1;
        }
        else // иначе начнаем с начала строки
            pos = 0;
    }
}
 
int main( )
{
    int i;
    int n = 50;  // будем дополнять пробелими до длины n
    char s[256];
    
    printf("Enter string: "); // ввод строки
    gets(s);
 
    
    for ( i = 0; i < n; ++i )
        printf("-");
 
    format_string(s, n); // форматирование
    
    printf("\n%s\n", s); // вывод строки
    
    for ( i = 0; i < n; ++i )
        printf("-");
    
    getch();
    
    return 0;
}
Такой вопрос:
Как сделать,чтобы вводился текст из нескольких строк разделенных энтером.И заканчивался нажатием на esc
Например:
Привет_тут энтер
Мир_тут энтер
!_Тут esc и ввод закончился
Не получается сделать массив строк,с передачей их функцию.То есть функция должны вывести каждую строку отдельно,предварительно отформатировав ее таким образом как в коде.Но код форматирует только 1 строку.Не выходит сделать форматирование нескольких строк
Спасибо за советы!
 
Текущее время: 09:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru