我正在尝试确定读取配置文件的最佳方式。这个"Parameters.cfg“文件只是用来定义值的,其格式如下:
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这些名称的存在是为了让用户知道他们正在定义哪些变量。我想让我的程序只读入实际的数字,跳过字符串。我知道我可以这样做,我在我的程序中定义了一大堆字符串,然后把它们放在那里定义,但显然没有使用。有没有一种方法可以在跳过字符串的同时轻松地读取数字?
发布于 2013-02-27 05:39:45
此方法根本不存储字符串(就像问题中所要求的那样):
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,而不是读取字符串并不使用它。
发布于 2013-02-27 05:27:38
显而易见的解决方案有什么问题?
string param_name;
int param_value;
while ( fin >> param_name >> param_value )
{
..
}您可以在每次迭代后丢弃param_name,同时将param_value存储在需要的任何位置。
发布于 2013-02-27 05:28:27
当你读出字符串的时候,不要把它们存储在任何地方:
std::vector<int> values;
std::string discard;
int value;
while (file >> discard >> value) {
values.push_back(value);
}https://stackoverflow.com/questions/15099516
复制相似问题