首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从配置文件中读取变量

从配置文件中读取变量
EN

Stack Overflow用户
提问于 2013-02-27 05:22:46
回答 5查看 8.3K关注 0票数 0

我正在尝试确定读取配置文件的最佳方式。这个"Parameters.cfg“文件只是用来定义值的,其格式如下:

代码语言:javascript
复制
origin_uniform_distribution 0
origin_defined 1
angles_gaussian 0
angles_uniform_distribution 0
angles_defined 0
startx 0
starty 0
gap 500
nevents 1000
origin_uniform_distribution_x_min -5
origin_uniform_distribution_x_max 5
origin_uniform_distribution_y_min -5
origin_uniform_distribution_y_max 5
origin_defined_x 0
origin_defined_y 0
angles_gaussian_center 0
angles_gaussian_sigma 5
angles_uniform_distribution_x_min -5
angles_uniform_distribution_x_max 5
angles_uniform_distribution_y_min -5
angles_uniform_distribution_y_max 5
angles_defined_x 10
angles_defined_y 10

这些名称的存在是为了让用户知道他们正在定义哪些变量。我想让我的程序只读入实际的数字,跳过字符串。我知道我可以这样做,我在我的程序中定义了一大堆字符串,然后把它们放在那里定义,但显然没有使用。有没有一种方法可以在跳过字符串的同时轻松地读取数字?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-27 05:39:45

此方法根本不存储字符串(就像问题中所要求的那样):

代码语言:javascript
复制
static const std::streamsize max = std::numeric_limits<std::streamsize>::max();
std::vector<int> values;
int value;

while(file.ignore(max, ' ') >> file >> value)
{
    values.push_back(value);
}

它使用ignore,而不是读取字符串并不使用它。

票数 1
EN

Stack Overflow用户

发布于 2013-02-27 05:27:38

显而易见的解决方案有什么问题?

代码语言:javascript
复制
string param_name;
int param_value;

while ( fin >> param_name >> param_value )
{
  ..
}

您可以在每次迭代后丢弃param_name,同时将param_value存储在需要的任何位置。

票数 4
EN

Stack Overflow用户

发布于 2013-02-27 05:28:27

当你读出字符串的时候,不要把它们存储在任何地方:

代码语言:javascript
复制
std::vector<int> values;
std::string discard;
int value;
while (file >> discard >> value) {
  values.push_back(value);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15099516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档