- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
{//НАЧАЛО ВРЕМЕННОГО БЛОКА ПОЛУЧЕНИЯ КОДА
try
{
int q=quan-pos;
char* temp=new char[q+1];//Временный буфер под код.
for(int i=0;i<q;temp[i]=buf_temp[pos+(i++)]);
//В цикле копируем в этот буфер символы кода.
temp[q]=0;//Завершаем строку буфера нулём.
code=atoi(temp);
delete[]temp;
}
catch(...)
{
//Проверка на вшивость, учитывая возможный размер кода, излишня, но всё же не помешает, поскольку не тормозит систему.
code=0;
}
}//КОНЕЦ ВРЕМЕННОГО БЛОКА ПОЛУЧЕНИЯ КОДА
Когда-то давно (школопериод) выпало изучать обмен данными по сети на С++.
В задании выше - кусок функции ListenSockets(), которая принимала по сети форматированную строку и парсила.
В те годы про strtok() я еще не слыхал...
nonamez 08.03.2013 13:14 # 0
Bart 08.03.2013 18:57 # 0
http://pastebin.com/suhzGK5x
Временный блок тут вообще не нужен. Равно как и далее по тексту функции.
bormand 08.03.2013 13:50 # +3
Bart 08.03.2013 19:02 # 0
Только сейчас предпочитаю для таких конвертаций sscanf().
bormand 08.03.2013 19:55 # +2
Если же набор полей зависит от значений предыдущих (а такое довольно часто встречается), то sscanf, к сожалению, ничем не поможет, т.к. не возвращает количества обработанных символов, и продолжить разбор строки не удастся.
P.S. Сейчас выложу свой ГК о сканфе.