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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.93
Alejo
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 38
#1

Вывод части строки после определенного символа - C++

07.10.2012, 23:58. Просмотров 4576. Ответов 8
Метки нет (Все метки)

Написал функцию:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
#include <string.h>
void main()
{
char stroka[100];
    cin>>stroka;
    char*primer;
    primer=strtok(stroka,"!");
    cout<<primer<<endl;
}
Я ввожу с клавиатуры любую строку, например qwert!yuiop, мне выводится qwert, то есть все в строке до символа '!'. Мне нужно что бы выводилось отдельно то что до ! и то что после. Возможно для этого существует какой нибудь оператор (оператор ? правильно ли это называть так ?), типа strtok ?
PS. вообще мне нужно часть строки до символа присвоить к одной переменной, а часть после - к другой переменной.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2012, 23:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод части строки после определенного символа (C++):

Рразделение строки на две части до первого вхождения заданного символа и после него - C++
Функция - Parse(s,t). Назначение - разделение строки s на две части: до первого вхождения символа t и после него. как можно сделать ее...

Написать программу разбиения строки на две части: до первого вхождения заданного символа и после него - C++
8.5.1. Помогите, пожалуйста, решить задачу в С++. Написать программу разбиения строки на две части: до первого вхождения...

Как скопировать подстроку из строки до определенного символа? Или удалить, начиная с этого символа - C++
Добрый вечер. Ответ искал, но не нашёл. Предположим, есть строка: ABC|DEF Надо скопировать всё до | , т.е., в приведённом...

Копирование строки до определенного символа - C++
Дан текстовый файл с командами типа INSERT(&quot;Ключ&quot;, Значение) \ FIND (&quot;Ключ&quot;) \ REMOVE (&quot;ключ&quot;) Собственно, нужно достать Ключ и значение,...

Чтение строки до определенного символа - C++
Всем привет, столкнулся с такой вот проблемой: int main() { char text; cin.getline(text, 50); if(strlen(text) == 0) ...

Вывод всех символов строки, расположенных после первого символа ":" - C++
Есть задача: С клавиатуры вводится строка. Составить программу, которая выводит на экран все символы, расположенные после первого...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.10.2012, 00:00 #2
Ещё раз strtok, но передаёте 0 первым аргументом. Эта функция вернёт 0, когда строка закончится.
0
Alejo
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 38
08.10.2012, 00:02  [ТС] #3
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Ещё раз strtok, но передаёте 0 первым аргументом. Эта функция вернёт 0, когда строка закончится.
Можно пример ?
0
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.10.2012, 00:08 #4
К примеру:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string.h>
using namespace std;
 
int main()
{
    char stroka[] = "ABC!DEF!GHI";
    char *primer = strtok(stroka, "!");
    do {
        cout << primer << endl;
    } while (primer = strtok(0, "!"));
}
Если только один раз разделить надо, то это так делается (не указываем разделитель):
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string.h>
using namespace std;
 
int main()
{
    char stroka[] = "ABC!DEF!GHI";
    char *primer = strtok(stroka, "!");
    char *other = strtok(0, "");
    cout << primer << endl;
    cout << other << endl;
}
Только аккуратно, strtok рушит исходную строку.
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.10.2012, 04:50 #5
Цитата Сообщение от Alejo Посмотреть сообщение
PS. вообще мне нужно часть строки до символа присвоить к одной переменной, а часть после - к другой переменной.
Перебирайте строку по символам и помещайте символы в массив, пока не встретите нужный разделитель (в конец массива - '\0'). Оставшееся - в другой массив (в конец массива - '\0').
0
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.10.2012, 09:37 #6
Именно это и делает strtok :) Только сразу же в исходном массиве, деля его на две строки.
0
Alejo
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 38
08.10.2012, 11:39  [ТС] #7
Спасибо, буду разбираться.
0
flerris
3 / 3 / 0
Регистрация: 17.08.2012
Сообщений: 145
08.10.2012, 11:45 #8
Вы имеете ввиду как черех цикл это сделать? если да,то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Допустим я ввел abc!edf
#include <iostream.h>
#include <string.h>
void main()
{
char stroka[100];
    cin>>stroka;
for (int i=0;i<100;i++){
if(stroka[i]=='!')
{
cout<<"Da"<<endl;
}}
}
при каждом "!" будет выводиться Da
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.10.2012, 21:28 #9
flerris,
Цитата Сообщение от Alejo Посмотреть сообщение
PS. вообще мне нужно часть строки до символа присвоить к одной переменной, а часть после - к другой переменной.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2012, 21:28
Привет! Вот еще темы с ответами:

Как скопировать часть строки до определенного символа? - C++
Допустим, пользователь вводит с клавиатуры строку. Необходимо скопировать часть строки до какого-то определенного символа и поместить ее в...

C# C++ Задача поиск определенного символа в строке, запись того что после него в дргую строку - C++
Вот пошагово: 1)Создать файл из символов, последний символ *(маркер) 2)После маркера записать ешё некоторое кол-во символов 3)...

Функция разбивает строку на две части: до первого вхождения заданного символа и после него - C++
Программу написал но не очень понятно как без цстринг (а это в условии, что нельзя пользоваться cstring). В самоучителе про цстринг...

Считать из файла от определенного символа(слова) до определенного символа(слова) - C++
Считываем текст из файла. Допустим от слова &quot;Qwerty&quot; до слова &quot;Uiop&quot;. Примерно догадываюсь как это реализовать FILE *f; char s;...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.10.2012, 21:28
Ответ Создать тему
Опции темы

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