Здравствуйте, Spider84, Вы писали:
S>Всем привет!
S>Помогите разобрать получшенный (char *) на строки... с разделением между строк \r\n. S>Я что-то запарился совсем... Отчаяный крик о помоци
Здравствуйте, Spider84, Вы писали:
S>Всем привет!
S>Помогите разобрать получшенный (char *) на строки... с разделением между строк \r\n. S>Я что-то запарился совсем... Отчаяный крик о помоци
#include <iostream>
#include <string>
using namespace std;
const string delimeter("\r\n");
void f(const string& s)
{
for (size_t b(0), e, l(s.size()); b < l && string::npos != (e = s.find(delimeter, b));
b = e + delimeter.size())
{
cout << s.substr(b, e - b) << '\n';
}
}
int main()
{
f("line 1\r\nline 2\r\nline 3\r\n");
return 0;
}
Здравствуйте, Spider84, Вы писали:
S>Помогите разобрать получшенный (char *) на строки... с разделением между строк \r\n. S>Я что-то запарился совсем... Отчаяный крик о помоци
Здравствуйте, m.a.g., Вы писали:
MAG>Здравствуйте, Spider84, Вы писали:
S>>Помогите разобрать получшенный (char *) на строки... с разделением между строк \r\n. S>>Я что-то запарился совсем... Отчаяный крик о помоци
MAG>Раз уж пошла такая пьянка...
MAG>boost::tokenizer спасет отца русской демократии.
Тогда можно и spirit заюзать
EBNF грамматика такая:
lines ::= line (delimeter line)*;
line ::= (string - delimeter);
string ::= any_character+;
delimeter ::= '\r' '\n';
Здравствуйте, Spider84, Вы писали:
S>Всем привет!
S>Помогите разобрать получшенный (char *) на строки... с разделением между строк \r\n. S>Я что-то запарился совсем... Отчаяный крик о помоци Если работаете в Борланде, попробуйте
AnsiString MyString; // твоя строка - как ее сделать из *char, сам реши... :)
. . . .
TStringList *pList = new TStringList;
pList->Text = MyString;
после чего разбираешь свои строки из pList`a на здоровье...
Здравствуйте, Spider84, Вы писали:
S>Помогите разобрать получшенный (char *) на строки... с разделением между строк \r\n. S>Я что-то запарился совсем... Отчаяный крик о помоци :)
Еще вариант разбора char* s:
for (char* line = strtok(s, "\r\n"); line; line = strtok(NULL, "\r\n"))
UseLine(line);
Здравствуйте, Flamer, Вы писали:
S>>Помогите разобрать получшенный (char *) на строки... с разделением между строк \r\n. S>>Я что-то запарился совсем... Отчаяный крик о помоци F>Только средствами С++ ? Тогда, навскидку: F>
F> // просто печатаем строку
F> printf(cSavedPtr);
А вот можно как-нить типа этого:
[ccode]
char **strs;
strs=malloc(strs_count);
...
//вместо printf(cSavedPtr);
strs=realloc(strs,strs_count++);
memcpy(strs[strs_count-1],cSavedPtr,strlen);
...
???
Я точно не знаю как, я ещё в C++ Не силён. Помогите!!
Как я понимаю в итоге я могу получить массив строк...
F>З.Ы. Перемудрил Без strlen и пр. F>З.З.Ы. Просто не хотелось отвечать из серии — посмотрите в сторону функции strstr
И правильно, так и надо было. Большое спасибо!