Форум: Форум C++Разное
Новые темы: 00
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разбиение строки
 
 автор: bronenos   (03.07.2007 в 22:42)   письмо автору
 
 

Нужно что-то похожее на explode в php, только strtok не пашет как надо...
  char** resp;
  char* buff;
  int s = 0;

  do
  {
    buff = strtok(Socket->ReceiveText().c_str(), "\n");
    resp[s++] = buff;
  } while (buff);

  Area->Lines->Add((AnsiString) resp[0]);

  Ответить  
 
 автор: like-nix   (03.07.2007 в 22:58)   письмо автору
 
   для: bronenos   (03.07.2007 в 22:42)
 

Если правильно понял
Вариант1
#include <iostream>
using namespace std;

int main()
{
char input[80];
char current[80];
int i, j;

cout << "Введите строку ";
fgets(input, 80, stdin);

for(i = 0; i < strlen(input); i++)
{
for(j = 0; input[i] != ' ' && input[i]; j++, i++)
{
current[j] = input[i];
}
current[j] = '\0';
cout << current << endl;
}
}

Вариант2

#include <iostream>
using namespace std;

int main()
{
char input[80];
char current[80];
char *prt, *prt_cur;

cout << "Введите строку ";
fgets(input, 80, stdin);

prt = input;

while(*prt)
{
prt_cur = current;
while(*prt != ' ' && *prt)
{
*prt_cur = *prt;
prt_cur++;
prt++;
}
// Пропускаем пробел
if(*prt) prt++;
*prt_cur = '\0';
cout << current << endl;
}
}

  Ответить  
 
 автор: bronenos   (04.07.2007 в 13:17)   письмо автору
 
   для: like-nix   (03.07.2007 в 22:58)
 

void __fastcall TCForm::Sread(TObject *Sender, TCustomWinSocket *Socket)
{
  AnsiString* result = Split("Яндекс, Рамблер, Гугл"", ");
  ShowMessage(result[0]); /* Ничего не выводит */
}


AnsiString* Split(AnsiString input, AnsiString sep)
{
  AnsiString output[256];
  int pos=1, size=0;

  while(true)
  {
    pos = AnsiPos(sep, input);

    if (pos == 0)
    {
      output[size] = input;
      break;
    }
    else
      output[size++] = input.SubString(0, pos-1);

    input.Delete(1, pos-1+sep.Length());
    if (pos == 0) break;
  }

  ShowMessage(output[0]); /* выводит Яндекс */
  return output;
}


Че за трабла?

  Ответить  
 
 автор: bronenos   (05.07.2007 в 11:21)   письмо автору
 
   для: bronenos   (04.07.2007 в 13:17)
 

*** вопрос снят

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования