2013-10-02 4 views
0

Я должен написать функцию splitLine() в C++. может кто-то помочь? im действительно запутаноC++ strtok function split words

splitLine() { 

    string temp = aLine; 
    string *tempLine = strtok(temp, " "); 
    free(temp) 
    countNum = sizeOf(tempLine); 

    } 
+0

Вероятно, он должен принять 'string' в качестве аргумента. – nhgrif

+0

в другом файле уже объявлена ​​строка aLine. с которыми можно манипулировать указателями – NewFile

ответ

1

Вы не понимаете инструкции.

Функция strtok функционирует на массивах символов с нулевым завершающим символом (так называемые строки C), а не на строках C++. Поэтому создать временный «строка» на самом деле означает это

// create temporary string which is a copy of aLine 
char* temp = new char[aLine.size() + 1]; 
strcpy(temp, aLine.c_str()); 

// extract words from temp 
... 

// free temporary string 
delete[] temp; 

Нарушение временной строки в слова с strtok означает написание цикл. strtok будет извлекать одно слово за раз. Я уверен, что вы можете найти примеры этого в Интернете. Поэтому я оставлю это вам.

+0

извините, мой английский не очень хороший на самом деле. Большое вам спасибо за помощь. это объясняет многое, но я не совсем понимаю, что вы подразумеваете под выдержкой слов из temp – NewFile

+1

Поверните '' Быстрая коричневая лиса '' в '" «Быстрая» «коричневая» «лиса» '. – nhgrif

+0

gotcha! благодаря:) – NewFile