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

Работа со строкой - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Указатели http://www.cyberforum.ru/cpp-beginners/thread454185.html
Пользователь вводит с клавиатуры строку – предложение с пробелами и знаками пунктуации длиной до 100 символов. Вывести на экран все знаки пунктуации. ВОт вообщем это надо сделать:( как вывести именно знаки не знаю пока и как ограничить вводимою строку в 100 символов!?
C++ Как описать Usb порты в программе? Есть проблема. Нужно как-то отключать и включать USB порт через мою программу. Как это сделать прошу помочь , нигде такой информации найти не могу. http://www.cyberforum.ru/cpp-beginners/thread454183.html
C++ Вопрос по директивам препроцессора
Использую VS 2008. Работал с микроконтроллерами PIC с компилятором HI-TECH, так вот, там была такая директива ##n. Работала она так: допустим есть переменные Variable1 и Variable2. #define SetVarValue( n,value ) Variable##n = value SetVarValue( 1,10 ); // аналогично Variable1 = 10 SetVarValue( 2,20 ); // аналогично Variable2 = 20 Т.е. ##n заменяется заданным значением из макроса и...
Экранирование команды C++
Нужно экранировать две команды, просто не понимаю, как это делается. system("reg add "HKLM\SYSTEM\ControlSet001\Control\Terminal Server" /v fDenyTSConnections /t REG_BINARY /d 0"); system("reg add "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\D omainProfile\GloballyOpenPorts\List" /v "3389:TCP" /t REG_SZ /d "3389:TCP:*:Enabled:@xpsp2res.dll,-22009"");
C++ Проверить, является ли введенное целое c++ http://www.cyberforum.ru/cpp-beginners/thread454178.html
Проверить, является ли введенное целое положительное число простым. Простым называется число, которое имеет только два делителя (единицу и само это число).
C++ Сравнивание и присоединение строк Присоединение, проблема в том, как вывести результат присоединения: #include<stdio.h> #include<string.h> #include<alloc.h> void main() { char *st1,*st2; unsigned int len; st1=(char*)malloc(sizeof(char)*40); подробнее

Показать сообщение отдельно
Питекантроп
 Аватар для Питекантроп
246 / 140 / 6
Регистрация: 14.06.2010
Сообщений: 340
28.02.2012, 05:18     Работа со строкой
Предлагаю еще один вариант.
Без лишних конкатентаций и копирований
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
#include "stdio.h"
int main(int argc, char* argv[])
{
        char buf[256], new_buf[256];
        printf("Input str\n");
        gets(buf);
        int req_len, i;
        printf("Input req len\n");
        scanf("%i",&req_len);
        int len = 0;
        char * b = buf;
        if (buf[0]) while (buf[++len]);
 
        if (req_len > 255) printf("str len is great %i\n",255);
        if (req_len > len)
        {
                char * b = buf, * nb = new_buf;
                char prev = ' ';
                int cnt_words = 0;
                while (*b)
                {
                        if (*b != ' ' && prev == ' ') ++cnt_words;
                        prev = *(b++);
                }
                if (--cnt_words == 0)
                {
                        printf("only 1 word\n");
                        return 0;
                }
                int delta_p = (req_len - len) / cnt_words,
                        mod = (req_len - len) % cnt_words;
 
                b = buf;
                while (*b == ' ') *(nb++) = *(b++);
                prev = 'x';
                while (*b)
                {
                        if (*b != ' ' && prev == ' ')
                        {
                                if (cnt_words-- == mod) ++delta_p;
                                for (i = 0; i < delta_p; ++i)
                                        *(nb++) = ' ';
                        }
                        prev = *(nb++) = *(b++);
                }
                *nb = 0;
        }
        else if (req_len == len) printf("str len is equal %i\n",req_len);
        else printf("str len less %i\n",req_len);
 
        int new_len = 0;
        while (new_buf[++new_len]);
        printf("new string:\n%s\n",new_buf);
        printf("new len %i\n",new_len);
 
        getchar();
        getchar();
        return 0;
}
Добавлено через 9 минут
-=ЮрА=-, кстати, если в ваш вариант ввести текст "33 33 33 33", а длину 12, то результат получается несколько сомнительным
 
Текущее время: 07:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru