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

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

Войти
Регистрация
Восстановить пароль
 
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
#1

Подстрока - C++

15.07.2010, 23:17. Просмотров 787. Ответов 13
Метки нет (Все метки)

Всем Приветы,
вопрос на сейчас такой:
Как получить подстроку из данной строки, если данная задаётся пользователем?
Вот пример:
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namepace std;
 
int main(){
char command[255];
cin >> command;
// Нужно получить, допустим, первые два символа строки 'command'
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1463 / 830 / 69
Регистрация: 26.03.2010
Сообщений: 2,830
15.07.2010, 23:18     Подстрока #2
Первый два символа.. в таком случае нужно вывести на экран первые две ячейки массива command.
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
15.07.2010, 23:23  [ТС]     Подстрока #3
мм, я не правильно задал вопрос... это понятно..
нужно получить два первых символа в переменную char
вот как
neske
1463 / 830 / 69
Регистрация: 26.03.2010
Сообщений: 2,830
15.07.2010, 23:25     Подстрока #4
Переменная char может содержать лишь один символ. Может вы имеете в виду указатель типа char?
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
15.07.2010, 23:26  [ТС]     Подстрока #5
Цитата Сообщение от neske Посмотреть сообщение
Переменная char может содержать лишь один символ. Может вы имеете в виду указатель типа char?
да, именно его
neske
1463 / 830 / 69
Регистрация: 26.03.2010
Сообщений: 2,830
15.07.2010, 23:45     Подстрока #6
Сидел я, думал. Но ни к чему не пришел.
Так же интересует этот вопрос, будем ждать более опытных пользователей
Syndarin
13 / 13 / 1
Регистрация: 15.09.2009
Сообщений: 57
15.07.2010, 23:52     Подстрока #7
А что если получить по очереди первый и второй символ, а затем сконкатенировать их? А результат присвоить указателю?
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
15.07.2010, 23:56  [ТС]     Подстрока #8
примерчик бы...
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
16.07.2010, 00:25     Подстрока #9
Цитата Сообщение от SKDzR Посмотреть сообщение
примерчик бы...
Если на С++ пишете, то там есть класс string с очень полезной функцией substr(), а так вот:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(void){
    char buf[BUFSIZ], * outBuf;
    int numToCopy;
 
    printf("String: ");
    if ( ! fgets(buf, BUFSIZ, stdin) ){
        perror("fgets");
        exit(EXIT_FAILURE);
    }
    printf("Number of characters to copy: ");
    if ( scanf("%d", &numToCopy) != 1 || numToCopy < 1 || numToCopy > strlen(buf) ){
        fprintf(stderr, "Wrong parameter!\n");
        exit(EXIT_FAILURE);
    }
 
    if ( ( outBuf = (char*)malloc(numToCopy + 1) ) == NULL ){
        perror("malloc");
        exit(EXIT_FAILURE);
    }
    strncpy(outBuf, buf, numToCopy);
    outBuf[numToCopy] = '\0'; /* чтобы уж совсем ни о чём плохом не думать */
    printf("Result: %s\n", outBuf);
 
    free(outBuf);
    exit(EXIT_SUCCESS);
}
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
16.07.2010, 00:32  [ТС]     Подстрока #10
можно примерчик substr? это уж как-то больно запутано всё для новичка
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
16.07.2010, 00:41     Подстрока #11
Цитата Сообщение от SKDzR Посмотреть сообщение
можно примерчик substr?
ага
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
int main(){
    std::string buf;
    int charsToCopy;
 
    std::cout << "String: ";
    std::getline(std::cin, buf);
    std::cout << "Number of characters to copy: ";
    std::cin >> charsToCopy;
    if ( charsToCopy < 1 || charsToCopy > buf.size() ){
        std::cerr << "Wrong parameter!" << std::endl;
        return 1;
    }
    std::cout << "Result: " << buf.substr(0, charsToCopy) << std::endl;
 
    return 0;
}
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
16.07.2010, 01:11  [ТС]     Подстрока #12
отлично, спасибо, но вот как работать, например, с таким условием:
C++
1
2
3
if ( stricmp ( command, sys_exit ) == NULL ){
        goto exit;
    }
command - наша задаваемая переменная, что к ней дописать нужно?
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
16.07.2010, 01:46     Подстрока #13
SKDzR, Сравнение? Ну сравнить n символов, если на то пошло. То есть:

strnicmp(command, sys_exit, n);

Кстати... У вас таки на Си или на Си++? Если на Си то strnicmp.
Cи++ str.compare: if(buf.compare(0, charsToCopy, subbuf)==0) и далее что надо сделать.
Или же strnicmp(buf.c_str(), subbuf.c_str(), charsToCopy).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2010, 01:59     Подстрока
Еще ссылки по теме:

Подстрока, заключенная в кавычки C++
C++ Функция определяющая сколько раз в строке встречается заданная подстрока
C++ Написать программу, которая подсчитывает, сколько раз подстрока встречается в строке
C++ Определить позицию, с которой подстрока входит в строку
Дана строка и подстрока. Вставить подстроку после каждого вхождения 'AB' в строке C++

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

Или воспользуйтесь поиском по форуму:
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
16.07.2010, 01:59  [ТС]     Подстрока #14
всё, со всем разобрался, всем спасибо =)
Yandex
Объявления
16.07.2010, 01:59     Подстрока
Ответ Создать тему
Опции темы

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