Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 11:52   #1
PotatoCaptain
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 40
По умолчанию Разбить строку на массив строк с помо*щью символа-разделителя

Здравствуйте, подскажите пожалуйста как разбить строку на массив строк с помощью символа-разделителя.
Обязательно с использованием функций заголовочного
файла <string.h>.
PotatoCaptain вне форума Ответить с цитированием
Старый 14.12.2011, 12:01   #2
Vard
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 21
По умолчанию

Можно воспользоваться функцией стандартной библиотеки memcpy, например
Vard вне форума Ответить с цитированием
Старый 14.12.2011, 12:03   #3
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Ммм... Проблема в чем? Строка это массив символов. Ищешь позицию символа разделителя, все элементы этой строки до разделителя копируем в массив и удаляем. И так до тех пор. пока строка не кончится? Или вам по операторам работы со строками подсказать?
danekne вне форума Ответить с цитированием
Старый 14.12.2011, 12:54   #4
PotatoCaptain
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 40
По умолчанию

Цитата:
Сообщение от danekne Посмотреть сообщение
Ммм... Проблема в чем? Строка это массив символов. Ищешь позицию символа разделителя, все элементы этой строки до разделителя копируем в массив и удаляем. И так до тех пор. пока строка не кончится? Или вам по операторам работы со строками подсказать?
Подскажи как искать позицию символа разделителя?
PotatoCaptain вне форума Ответить с цитированием
Старый 14.12.2011, 13:15   #5
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

тыц
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 14.12.2011, 13:28   #6
Egyptorium
Пользователь
 
Регистрация: 14.12.2011
Сообщений: 17
По умолчанию

Мы с Капитаном в одной бригаде :
символ разделитель мы нашли,
я не представляю, как в массив помещать по целому куску строки?
или как создать n массивов?
Egyptorium вне форума Ответить с цитированием
Старый 14.12.2011, 13:36   #7
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Ну, как вариант:
Сначала подсчитываете, сколько символов-разделителей есть в исходной строке, тем самым выясняя, какой размерности будет будущий массив; объявляете этот массив и в цикле в него записываете подстроки, отрезая их от исходной строки.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 14.12.2011, 13:38   #8
Vard
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Egyptorium Посмотреть сообщение
Мы с Капитаном в одной бригаде :
символ разделитель мы нашли,
я не представляю, как в массив помещать по целому куску строки?
или как создать n массивов?
повторюсь, например с помощью функции memcpy
Vard вне форума Ответить с цитированием
Старый 14.12.2011, 13:45   #9
Egyptorium
Пользователь
 
Регистрация: 14.12.2011
Сообщений: 17
По умолчанию

Получается вот такой код, но вылетает с чудовищными ошибками
string a,b,c,d,e,f,h;
int i,j,n;
char w[1];
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
//другие задачи
cout << "Задача №7" << endl;
cout << "Введите строку: ";
getline (cin,a);
cout << "Введите символ-разделитель: ";
cin >> w[0];
n=0;
for (i=0;i>=a.length()-1;i++)
if (a[i]==w[0]) n++;
string* mas = new string [n];
for (i=0;i>=a.length()-1;i++)
if (a[i]!=w[0]) b=b+a[i];
else
{
mas[n] = b;
b.erase();
n++;
}
cout << "Вывод построчно получившегося массива: " << endl;
for(j=0;j>n-1;j++)
cout << mas[j] <<endl;
Egyptorium вне форума Ответить с цитированием
Старый 14.12.2011, 13:57   #10
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

PotatoCaptain

как разбить строку на массив строк с помощью символа-разделителя

strtok
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение символа разделителя tsar_ Общие вопросы Delphi 7 31.03.2011 13:32
разбить строку Ceprey Общие вопросы C/C++ 10 24.12.2009 20:47
Разбить строку в delphi severin Помощь студентам 2 12.11.2009 12:03
C++: разбить строку на подстроки apromix Помощь студентам 2 04.10.2009 01:07
Разбить строку на 2 части 7KByte Общие вопросы C/C++ 6 31.05.2009 16:51