Я хотел бы знать, как лучше всего сделать следующее в c ++, пожалуйста.У меня есть классы Parser и Gather;сборщик использует синтаксический анализатор.
У меня есть метод в классе Parser для анализа моего файла с тремя параметрами: ID процесса (int), путь (string, char, char * ... ???) иформат строки (также я не знаю, что здесь лучше - строка, константная строка и т. д.)
Лучше создать данные [] в методе Parse.method и вернуть их, либо передать ссылку на метод и сохранить переменную данных в классе сбора?
char* ProcInfoParser::parseStatm(const int _processPid, std::string _path, std::string _strFormat) {
char path[32];
char* data[2042];
int tps = sysconf(_SC_CLK_TCK);
int fd = open(path, O_RDONLY);
if (fd < 0) {
perror("open");
return "-1"; //wrong...
}
if (read(fd, data, 2048) == -1) {
perror("read");
return "-1"; //wrong...
}
close(fd);
char name[1024];
long unsigned int utime, virt;
long int rss;
sscanf(data, "%*d %s %*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u %lu"
" %*u %*d %*d %*d %*d %*d %*d %*u %lu %ld", name, &utime, &virt, &rss); //Iwish to use the _stringFormat variable here...
return data;
}
Я действительно не знаю, какой выбрать между char (char * ...) или string;Я также хочу создать путь с идентификатором процесса, например string.Format ("/ proc / (0) / statm", processID);функция sprintf работает так?Может быть, я должен взглянуть на повышение ...
Заранее спасибо