Форум программистов, компьютерный форум CyberForum.ru

Своя реализация strtok - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблемы с много-файловыми объявлениями http://www.cyberforum.ru/cpp-beginners/thread936214.html
Добрый день! У меня возникла небольшая проблема после того как я стал изучать Win API, мне стало неудобно хранить весь код в одном файле main.cpp И вот я решил разбить мой проект на несколько частей: Иницилизация окна, main, GameMain И вот тут я встретился с некоторыми проблемами... (определял в заголовочных файлах) После этого я разбил Иницилизацию, GameMain по 2 файла .h и .cpp И вот от...
C++ Указатель на виртуальную функцию #include <stdio.h> #include <conio.h> class A { public: virtual void f(){printf("a\n");}; }; class B:public A http://www.cyberforum.ru/cpp-beginners/thread936191.html
C++ ostream& output
Что это за параметр такой, - ostream& output? ostream& operator<< (ostream& output, const Array<T>& theArray) { for (int i = 0; i<theArray.GetSize(); i++) output << " " << theArray << endl; return output; }
C++ Зачем false?
void IntFillFunction(Array<int>& theArray) { bool Stop = false; int offset, value; while (!Stop) { cout << "Enter an offset (0-9) "; cout << "and a value. (-1 to stop): " ; cin >> offset >> value; if (offset < 0)
C++ Указатель, как массив http://www.cyberforum.ru/cpp-beginners/thread936181.html
Объясните, пожалуйста, каким образом в 10-ой строке указатель pType ведет себя как массив? template <class T> // declare the template and the parameter class Array // the class being parameterized { public: Array(int itsSize = DefaultSize); Array(const Array &rhs); ~Array() { delete pType; } Array& operator=(const Array&);
C++ ReadProcessMemory ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + Player_Base), &CLocalPlayer, sizeof(DWORD), 0); Объясните пожалуйста эту строку подробнее

Показать сообщение отдельно
Stella
75 / 75 / 5
Регистрация: 26.02.2013
Сообщений: 224
10.08.2013, 17:18     Своя реализация strtok
taimag, может так (как вариант):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
char* mStringTokens(const char *source, const char *separator)
{
  int ret = 0;
  static const char *lastIterator;
  if (source != 0) {
    lastIterator = source;
  }
  if (*lastIterator == 0) {
    return 0;
  }
  const char *wordBegin = lastIterator;
  const char *separatorBegin = separator;
 
  while (*wordBegin != 0) {
    while (*separatorBegin != 0) {
      if (*wordBegin == *separatorBegin) {
        ret = wordBegin - lastIterator;
        
        char * tmpstr = new char [ret+1];
        for(int i = 0; i < ret; ++i)
            tmpstr[i] = lastIterator[i];
        tmpstr[ret] = '\n';
        lastIterator = wordBegin + 1;
        return tmpstr;
    //    return ret;
      }
      ++separatorBegin;
    }
    separatorBegin = separator;
    ++wordBegin;
  }
  if (*wordBegin == 0) {
    ret = wordBegin - lastIterator;
    char * tmpstr = new char [ret+1];
    for(int i = 0; i < ret; ++i)
        tmpstr[i] = lastIterator[i];
    tmpstr[ret] = '\n';
    return tmpstr;
  //  return ret;
  }
 
  char * tmpstr = new char [ret+1];
  for(int i = 0; i < ret; ++i)
      tmpstr[i] = lastIterator[i];
  tmpstr[ret] = '\n';
  return tmpstr;
}
Там правда копирование лучше отдельной функцией или strcpy использовать.
 
Текущее время: 00:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru