【发布时间】:2011-12-18 14:18:55
【问题描述】:
我想知道在 c++ 中制作以下内容的最佳方法。我有一个 Parser 和一个 Gather 类;收集消耗解析器。
我在 Parser 类中有一个方法可以用三个参数解析我的文件:进程 ID (int)、路径(字符串、char、char*...???)和字符串格式(我也不知道哪个是最好在这里 - 字符串,常量字符串等......)。
最好在Parse.method中创建一个data[]并返回,还是传递一个对方法的引用,并将data变量保存在gather类中?
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); 这样的进程 ID 创建一个路径sprintf 函数是这样工作的吗?也许我应该看看 boost...
提前致谢
【问题讨论】:
标签: c++ pointers data-structures return