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

Разделить строку на слова. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ двухмерный массив http://www.cyberforum.ru/cpp-beginners/thread98303.html
Не получается сделать что бы все 4 символа ходили по массиву рендом, если не трудно подскажите. #include <iostream> #include <iomanip> #include <cstdio> #include <cstdlib> void Flip(char& x, char& y){ char temp = x; x = y;
C++ использование assemblera в С++ Здравствуйте, господа программисты. С ассемблером раньше не сталкивался. Поэтому нужна помощь. В коде С++ нужно сделать ассемблеровскую вставку. В ней должно рассчитываться арифметическое выражение. (9-(b+2)^2)/(b^2+10*b+25^3) Заранее спасибо) http://www.cyberforum.ru/cpp-beginners/thread98296.html
простой класс C++
покажите пожалуйста самую простою классу, корорый показывает "Hello World"
C++ ошибка компиляции в Borland C++ 3.1
Есть задание, сделать что то на подобии оконной библиотеки иль тип того...в общем класс по работе с окнами в консоли (можно создавать произвольные окна, закрывать их и т.п.). Делаем это пока в Borland C++ 3.1, т.к. там проще всего выводить графику в консоли (через реальный режим процессора мона напрямую одресовать видеопамять и выводить псевдографику). Собственно вот недоделаный код main.cpp...
C++ Сортировка массива http://www.cyberforum.ru/cpp-beginners/thread98235.html
Здорова. Моя программа сортирует массив по диагоналям, то есть меняет местами элементы двух диагоналей квадратной матрицы. Ещё в задании есть пункт о том что не должны меняться местами максимальные элементы диагоналей. И вот после введения этого ограничения на максимальные числа программа перестала корректно работать. В некоторых тестах всё норм, а в некоторых меняет там где максимальное число а...
C++ Определите наибольший общий делитель чисел Привет,всем!!!Я учусь в колледже информатики и мы только начали изучать Си и нам дали электронную контрольную работу,но когда я отправляю свои решения он говорит,что решено не правильно,поэтому прошу у вас помощи ведь отправить надо сегодня до 6 часов вечера!За ранее спасибо и с праздником!!! 1) Дано трёхзначное число. В нём зачеркнули последнюю справа цифру и приписали ее в начало. Найти... подробнее

Показать сообщение отдельно
nail89
5 / 5 / 0
Регистрация: 28.07.2010
Сообщений: 12
30.07.2010, 19:26     Разделить строку на слова.
Задачка из этой же области.
Есть строка из команд:
$sdfsdf DPROfub Pdfsdf0sdf8e-r1|$sbgg DPRerdfsdwerwefw8e-r1|$go DPRerdfsdwerwefw8e-r1|
Команды разделены символом:
|
При этом команд в строке может быть неограниченное количество.
Нужно в цикле получить каждую команду и первое слово в ней.

Вот я делал так:

C++
1
2
3
4
5
6
7
8
9
10
11
pch = strtok (buf,"|"); // buf - содержет всю строку. pch получает первую команду
    while (pch != NULL) // Через цикл вынимаем все команды через строку (10)
    {
       printf ("--pch: %s\n",pch); // Выводится в цикле поочереди все команды
       pch2 = pch;
       pch2 = strtok (pch2, " ");
       printf ("--pch2: %s\n",pch2); // Выводится первое слово из команды
       pch2 = "";
 
       pch = strtok (NULL, "|"); // Должна вынуть следующую команду, но срабатывает на строку (6)
    }
Одна проблема, этот код не работает, т.к. получаются вложенные strtok и последняя строка (10)
pch = strtok (NULL, "|");
срабатывает на (6)
pch2 = strtok (pch2, " ")
, а дожна на (1)
pch = strtok (buf,"|");
чтобы получить следующую команду.

А нужно в результате получить такое:
--pch: $sdfsdf DPROfub Pdfsdf0sdf8e-r1
--pch2: $sdfsdf
--pch: $sbgg DPRerdfsdwerwefw8e-r1
--pch2: $sdfsdf
--pch: $go DPRerdfsdwerwefw8e-r1
--pch2: $sdfsdf
Подскажите простой способ реализовать.

Добавлено через 1 час 0 минут
Придумал другое решение, но не хватает навыка чтоб реализовать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
buf = "$sdfsdf DPROfub Pdfsdf0sdf8e-r1|$sbgg DPRerdfsdwerwefw8e-r1|$go DPRerdfsdwerwefw8e-r1|";
char pch2[102] = {0}; // Для заполнения
int i,k,s;
k=0;
s=strlen(buf);
for (i=0;i<s;i++)
{       
    pch2[i] = buf[i]; // Записываем кажддый символ поочереди
    k++; // Считаем кол-во символов
 
    if (buf[i]=='|') // Если замечен разделитель - pch2 содержет команду полностью
    { 
       .... // Тут нужно создать новую переменную размером с k и поместить в неё всё из pch2....?
       .... // Выделяем первое слово полученной команды этим же способом....
       .... // Выводим команду и её первое слово на экран....
 
 
       k = 0 // Устанавливаем в 0 чтобы считать символы следующей команды
       //
    }
}
Помогите дописать..или может это неправильная реализация?
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru