Нет ничего плохого в использовании C-строк.Однако для этого потребуется написать довольно немного низкоуровневого кода, который уже абстрагировался при использовании объектов String.
Как правило, C-String - это просто массив байтов (каждый байт).соответствует значению символа ascii) с нулевым байтом в конце.Фактический синтаксис команд, однако, может быть немного эзотерическим, я рекомендовал cplusplus.com в качестве справочного.
Ваш второй вызов strtok должен быть вызван с нулем, а не снова с подлиней:1006 *
В данный момент вы токенизуетесь по знаку равенства, поэтому вы получите:
PatchVersion
=1.1.1.2 ProductName
=l4d appID
=440
Не забывайте, что strtok потребляет входную строку, поэтому subLine будет пуста, как только выЦикл завершается.
Я бы начал с токенизации строки пробелами, чтобы получить каждую пару ключ-значение.Затем я разделил бы каждую пару ключ-значение на составляющие ее элементы и сохранил нужные.Функция (s) scanf может очень хорошо выполнить этот тип анализа.Чтобы прочитать одну пару в name
и value
:
char * name = new char[255];
char * value = new char[255];
sscanf(subLine, "%s=%s", name, value);
Затем вы можете использовать strncpy, чтобы скопировать значение в соответствующее место.sscanf не использует входные данные, поэтому последующие вызовы должны будут переместить указатель subLine дальше предыдущего соответствия (или использовать три пары% s =% s в выражении формата вместе с тремя парами переменных name и value, если вы знаете,всегда будет три).
Важно, чтобы код вашего приложения был как можно дальше от операций низкого уровня, насколько это разумно.Если вы часто делаете этот тип манипуляции, поиск или создание библиотеки, которая анализирует такие файлы, может быть хорошей (и забавной) идеей.