Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите, проект горит... работа со строками 
:(
    Опции темы
mr.DUDA
Дата 8.4.2004, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Цитата
Да что не хочеть компиляться на вижаке:
функции explode, implode

а какие библиотеки подключать

#include <string>
Добавлено @ 19:05
#include <vector>


--------------------
user posted image
PM MAIL WWW   Вверх
Гость_Михаил
Дата 8.4.2004, 19:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
кстати на платформе Net уже они есть.


да я на нет компилял, нехватает ему чего-то sad.gif
  Вверх
Гость_Михаил
Дата 8.4.2004, 19:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Почему то не хочет (
#include <vector>
#include <string>

#include "stdafx.h"
  Вверх
mr.DUDA
Дата 8.4.2004, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



чего пишет (какие сообщения об ошибках выкидывает при компиляции) ???
Добавлено @ 21:12
З.Ы, сначала подключается stdafx.h а потом все остальные заголовки; на warning'и типа C4776 внимания обращать не нужно.


--------------------
user posted image
PM MAIL WWW   Вверх
sergejzr
Дата 9.4.2004, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



 Вот подумал: Проект горит у человека. smile
В другой раз не стал бы конечно писать программу, но тут встреча одна отменилась и время появилось...
Короче вот, забирай код. В принципе должно быть понятно, как работает.
Если что, спрашивай.
Код

#include <string.h>
#include <stdio.h>
/*
trim(char* in)
Удаляет пробелы из начала и конца строки
    in:  строка (не константная!)
    out:    указатель на модифицированную часть строки без пробелов в начале и конце
    Att!:    модифицирует строку in
*/
char* trim(char* in)
{
    char* ret=in;
    char *end;

    for(;*ret==' ';ret++);  //пропускаем указателем пробелы в начале
    end= &ret[strlen(ret)-1];    //сажаем end на конец слова
    for(;*end==' ';end--);  //отступаем на пробелы в конце
    end++;    //ставим указатель за последнюю букву
    *end=0;    //помечаем конец слова '\0'. (char('\0')=int(0))
    return ret; 
}
/*
void explode(char*txt, const char* divisor, char** stroki)
делит строку txt разделённую разделителями divisor на несколько строк stroki
   in:    txt  строка(не константная!)
    divisor    набор символов - разделителей
    stroki    строки результата
   Att!:    модифицирует строку txt, модифицирует stroki
*/
void explode(char*txt,const char* divisor,char** stroki)
{    /*
  Я подумал поставить указатель строки на первую букву 
  слова и заменить разделитель на '\0'..
    */
    int i=0;
    int txtlen=strlen(txt);  //длинна текста
    int divlen=strlen(divisor);    //длинна слова-делителя
    const char* divhlp=divisor;
    char* txthlp=txt;
    
    if(txtlen<divlen)
    {//Тут чего то намудрили :)
  *stroki=0;
  return;
    }
    if(strncmp(txt,divisor,divlen)==0)
    {  //если первым  в строке делитель - перескочим его
  txt+=divlen;
    }
    *stroki=txt;    //первый указатель строк на txt;
    for(;*txt!=0;txt++)
    {  txthlp=txt;
    for(;*divhlp!=0;divhlp++)
    {    //сравним оставшийся текст с разделителем
    if(*(txthlp++)!=*divhlp)
    {  //разделитель не найден(какая то буква не совпала).
      goto blin;//не красиво, но быстро
    }
    }
  *txt=0;     //заменить разделитель на '\0'
  *stroki=trim(*stroki);    //убрать лишние пробелы
  stroki++;    //поставить следующую строку
  *stroki=txt=txthlp;  //перескочим разделитель
blin:;      //Проверяем со следующей буквы    
divhlp=divisor;
    }
    /*
  Обрабатываем последнее слово 
  (тут надо это делать только если в конце не было разделителя)
    */    
    if(*stroki[0]!=0)
    {
  *stroki=trim(*stroki);
  stroki++;
    }
    *stroki=0; //пометим последнюю строчку
}

int main()
{
 char line[300];
 char* stroki[50];
 int i;
 //подготовим Line
 sprintf(line,"%s","+++slovo1   +++  slovo2 +++slovo3'+++ slovo4'slovo4   +++slovo5  +++slo    fo   +++");
 *stroki=0;

 explode(line,"+++",stroki);
 
 for(i=0;stroki[i]!=0;i++)
 {
  printf("%i '%s'\n",i,stroki[i]);    
 } 
 return 0;
}

Удачи!
Cергей 

Это сообщение отредактировал(а) sergejzr - 15.1.2007, 21:01


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Guest
Дата 9.4.2004, 03:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











sergej.z СПАСИБО )) Огромное спасибо, так же всем кто принял в это
теме участие!
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.