Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Разбиение строк

4.1K
25 июля 2006 года
Zeran
80 / / 21.07.2006
Подскажите плиз как в Билдере 6м разбить строку на массив символов по определенному разделителю?Искал в мануале ф-цию подобную "шарповскому" Splitу - не нашел....
Благодарю за помощь.:)
294
26 июля 2006 года
Plisteron
982 / / 29.08.2003
 
Код:
Memo1->Lines->Delimiter = ':';
    Memo1->Lines->DelimitedText = "Мама:мыла:раму";
4.1K
26 июля 2006 года
Zeran
80 / / 21.07.2006
...а если я например не с Мемо строку беру а с какого-то другого буффера?Например считываю файл в переменную, и хочу разбить ее на массив по определенному разделителю, например '\t'?
8.7K
26 июля 2006 года
Rubicon
55 / / 28.10.2005
смотри strtok() и прочее из string.h
4.1K
26 июля 2006 года
Zeran
80 / / 21.07.2006
Ну и напряг...в шарпе просто пишешь после строки которую нуна разбить .Split(Separators) и все... :(((
4.1K
26 июля 2006 года
Zeran
80 / / 21.07.2006
Нифига я не нашел!
Пля стоко умных людей на форуме бывает и что, никто никогда не встречался с таким?Мож кто-то сам писал когда-то такую ф-цию?Блин я уже 4 дня парусь, простенькая прога, вся загвоздка в том чтоб разбить строку на массив строк...строка разделена ТАБами...
ПОМОГИТЕ ПЛИЗ КТО-НИТЬ!!!
294
27 июля 2006 года
Plisteron
982 / / 29.08.2003
[QUOTE=Zeran]Нифига я не нашел!
Пля стоко умных людей на форуме бывает и что, никто никогда не встречался с таким?Мож кто-то сам писал когда-то такую ф-цию?Блин я уже 4 дня парусь, простенькая прога, вся загвоздка в том чтоб разбить строку на массив строк...строка разделена ТАБами...
ПОМОГИТЕ ПЛИЗ КТО-НИТЬ!!![/QUOTE]
А подумать немного и F1 в Билдере нажать?
 
Код:
TStringList *slTabs = new TStringList;
slTabs->Delimiter = '\t';
slTabs->Clear();
slTabs->DelimitedText="Мама\tбила\tМашу";
AnsiString x1 = slTabs->Strings[0]; // Мама
AnsiString x2 = slTabs->Strings[1]; // била
AnsiString x3 = slTabs->Strings[2]; // Машу
delete slTabs;
294
27 июля 2006 года
Plisteron
982 / / 29.08.2003
[QUOTE=Zeran]Нифига я не нашел!
Пля стоко умных людей на форуме бывает и что, никто никогда не встречался с таким?Мож кто-то сам писал когда-то такую ф-цию?Блин я уже 4 дня парусь, простенькая прога, вся загвоздка в том чтоб разбить строку на массив строк...строка разделена ТАБами...
ПОМОГИТЕ ПЛИЗ КТО-НИТЬ!!![/QUOTE]
Хех... Лови то же самое, но без AnsiString и VCL. Возможные ошибки найдёшь и исправишь сам, хотя, вроде, код работает (протестировано в Borland C++ 1.3 for DOS)
Код:
#include <stdio.h>
#include <string.h>

int MySplit(char *src, char **dst, char splitchar);

int main(void)
{
    char *x;
    char *strings[60];
    int i;
    int n;

    strcpy(x, "Run\tLive\tTo\tFly\t,\tFly\tTo\tLive\tAces\tHigh\t!");

    for(i = 0; i < 60; i++)
        strings = new char[100];

    n = MySplit(x, (char**)strings, '\t');

    for(i = 0; i < n; i++)
        puts(strings);
    for(i = 0; i < 60; i++)
        delete[] strings;
    return 0;
}

int MySplit(char *src, char **dst, char splitchar)
{
    int i;
    int l;
    int j;
    int k;

    for(k = 0, i = 0, j = 0, l = strlen(src); i < l; i++)
    {
        if(src == splitchar)
        {
            dst[j++][k] = '\0';
            k = 0;
        }
        else
            dst[j][k++] = src;
    }
    if(k)
        dst[j][k] = '\0';

    return ++j;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог