0

我正在尝试从 Debian 包的控制文件中读取数据,就像下一个示例一样,在 C++ 中:

Package: com.example.test
Version: 1.0
...
Homepage: http://example.com
...

我可以使用以下代码阅读它,但是当它在主页中时,我只会得到“http”:

string item;

vector<string> data;

stringstream str(line);

while(getline(str, item, ':' )) {
    data.push_back(item);
}

如何将“主页”读入data[0]并获取数据data[1]

4

1 回答 1

1

仅在读取一行中的第一项时指定:为结束字段。

std::string key, value;

while (std::getline(infile, key, ':'))
     std::getline(infile, value);

而不是在键和值之间交替的字符串向量,我可能会使用一个std::map(或可能std::multimap),它是专门为这样的情况而构建的:

std::map<std::string, std::string> package_data;

while (std::getline(infile, key, ':')) {
     std::getline(infile, value);

     package_data[key] = value;
}

然后,您可以直接从键中查找值:

 std::string homepage = *package_data.find("Homepage");
于 2013-04-26T14:58:26.557 回答