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

Скопировать часть строки - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
Grey5
2 / 2 / 0
Регистрация: 11.03.2010
Сообщений: 178
31.05.2013, 18:45     Скопировать часть строки #1
Как мне скопировать часть строки с элемента a по элемент b?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Владимир_1994
2 / 2 / 0
Регистрация: 19.05.2013
Сообщений: 27
02.06.2013, 17:02     Скопировать часть строки #21
Если речь идет про стринг, то string s1 = s.substr(c какого символа, сколько символов); где s - это та строка из которой копируешь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Grey5
2 / 2 / 0
Регистрация: 11.03.2010
Сообщений: 178
02.06.2013, 18:59  [ТС]     Скопировать часть строки #22
Владимир_1994, Я уже всё удачно скопировал, мне теперь интересно что не так с функцией
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,021
Записей в блоге: 10
Завершенные тесты: 1
03.06.2013, 17:27     Скопировать часть строки #23
Как ты думаешь, что делает эта строка: char * xStr = new char[]; ?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
03.06.2013, 18:00     Скопировать часть строки #24
Цитата Сообщение от lazybiz Посмотреть сообщение
что делает эта строка: char * xStr = new char[]; ?
А Вы ответ не даете потому что
Цитата Сообщение от lazybiz Посмотреть сообщение
Чем меньше знаете вы, тем ценнее я как разработчик.
?
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,021
Записей в блоге: 10
Завершенные тесты: 1
03.06.2013, 18:03     Скопировать часть строки #25

Не по теме:

Tulosba, совершенно верно!)



Добавлено через 1 минуту
Хотя, на самом деле, мне просто интересно что ТС думает по этому поводу.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
03.06.2013, 19:14     Скопировать часть строки #26
lazybiz, что думает ТС, понятно. Не понятно почему компилятор ms такое допускает. Отсутствие размерности в скобках равносильно наличию там нуля.
Grey5
2 / 2 / 0
Регистрация: 11.03.2010
Сообщений: 178
03.06.2013, 19:48  [ТС]     Скопировать часть строки #27
Компилятор мне выдаёт 49 предупреждений но всё норм. Компилятор 2010 года выдаёт ещё 7 ошибок, но всё работает без ошибок.
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,021
Записей в блоге: 10
Завершенные тесты: 1
03.06.2013, 19:56     Скопировать часть строки #28
Цитата Сообщение от Grey5 Посмотреть сообщение
но всё работает без ошибок.
Цитата Сообщение от Grey5 Посмотреть сообщение
Почему у меня в функцию передаётся только первый элемент строки?
Как так получается?
Ответь на 23-й пост.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 20:33     Скопировать часть строки
Еще ссылки по теме:

C++ Скопировать из файла часть символов
C++ Как скопировать часть строки до определенного символа?
C++ Как скопировать содержимое строки char?

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

Или воспользуйтесь поиском по форуму:
Grey5
2 / 2 / 0
Регистрация: 11.03.2010
Сообщений: 178
03.06.2013, 20:33  [ТС]     Скопировать часть строки #29
Теперь новая задача, как не допустить вызов функции добавления в список, при наличии в файле двух одинаковых записей?
То есть не надо допустить вызова функции ADDASTF
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
void TRUEINFAST(char * path) {
    bool flag;
    ifstream F;
    F.open(path,ios::out);
    char s[200];
    char * xStr = new char[];
    //char xStr[30];
    CLRAST();
    SPK<astL> *HEAD;
    while(!F.eof())
    {
        flag=false;
        HEAD = new SPK<astL>;
        int j=0, k=0;
        size_t sq1=NULL, sq2=NULL;
        F>>s;
        if (s[0]=='1')
        {
         for (int i = 0; i < strlen(s); i++)
         {
              if (s[i] == '@')
              {
                  j++;
                if (j<2)  k=i;
                if (j==2)
                {
                    sq1=(size_t)(i-1-k);
                    sq2=(size_t)(k+1);
                  strncpy(xStr,s+sq2,sq1);
                  xStr[sq1]='\0';
                  HEAD->elem.id=atoi7(xStr);
                  for (SPK<AST> *TEMP = AST_HEAD; TEMP != NULL; TEMP = TEMP->next){
                    if (TEMP->elem.id==atoi7(xStr)) {flag=true;}else{flag=false;}}
                  k=i;
                }
                if (j==3)
                {
                    sq1=(size_t)(i-1-k);
                    sq2=(size_t)(k+1);
                    strncpy(HEAD->elem.name,s+sq2,sq1);
                    HEAD->elem.name[sq1]='\0';
                    k=i;
                }
                if (j==4)
                {
                    sq1=(size_t)(i-1-k);
                    sq2=(size_t)(k+1);
                    strncpy(xStr,s+sq2,sq1);
                    xStr[sq1]='\0';
                    HEAD->elem.price=atoi7(xStr);
                    k=i;
                }
                }
         }
         if (flag) continue;
         ADDASTF(HEAD->elem.id, HEAD->elem.name, HEAD->elem.price);
        }
    }
    
    PRTAST();
}
Добавлено через 3 минуты
lazybiz, Да не, я потом там чутка подправил. Прописал
C++
1
HEAD = new SPK<astL>;
.
И я без понятия что делает эта строка, видимо вызывает программиста, и он дописывает код.
Yandex
Объявления
03.06.2013, 20:33     Скопировать часть строки
Ответ Создать тему
Опции темы

Текущее время: 19:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru