C ++如何读取较复杂的cfg文件?

高迪尔·克雷默斯

我最近从c#更改为c ++。我一直在看一些有关如何读取配置文件的教程。我可能会问错,我的意思是:我正在编写一个程序,但这是针对多个用户的。每个用户都会喜欢文本文件中的内容。示例:在我的文本文件(“ items.txt”)中,我具有默认的“ ints”和可配置的“ ints”。

10=5
90=2
50=9

在C#中,如果我没记错的话,我会读取所有行,并且如果该行以“ 10 =”开头,那么我会拆分文本,因此我的行只能是可配置的int,并且我可以在程序中轻松使用它是这样的:

string[] lines = File.ReadAllLines(path);
string str;
foreach (string line in lines)
{
if (line.StartsWith("10"))
{
str = line.Split('=')[1];
//I have what i need (str);
}
}

我做了我需要的一切。那么,用c ++做到这一点的最佳方法是什么?

还:我需要为它们指定一行,以便以后在程序中使用它们。

在此先多谢!

无用

您的文件中有3件事:

  1. 行,我们可以阅读 getline
  2. 键(之前的行的一部分=
  3. 值(后面的部分=)。

    我们可以通过查找=字符来拆分键和值

因此,您将获得类似以下内容的信息:

std::ifstream file(path);
if (!file) {
    std::cerr << "unable to open " << path << std::endl;
    return false;
}

for (std::string line; getline(file, line); ) {
    auto pos = line.find('=');
    if (pos == line.end()) {
        std::cerr << "skipping invalid line '" << line << "'\n";
        continue;
    }
    auto key = line.substr(0, pos);
    auto val = line.substr(pos);
    // do something with key,val
}

如果要将上面的键和值字符串转换为int,可以使用进行std::stringstream转换,也可以使用std::strtol

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从C ++读取.spc文件?

来自分类Dev

C ++-如何读取系统文件

来自分类Dev

如何使用 linq C# 读取复杂的 XML

来自分类Dev

如何在Haskell中读取.cfg文件

来自分类Dev

如何首先使用c#从Directory中获取较旧的文件?

来自分类Dev

如何从C ++文件中读取矩阵?

来自分类Dev

如何显示从c中的文件读取的分数

来自分类Dev

如何在C ++上读取多个文件

来自分类Dev

如何使用C读取xlsx文件

来自分类Dev

如何使用C ++在Hololens上读取文件

来自分类Dev

如何读取XML文件C#

来自分类Dev

如何使用pebble c从文件读取?

来自分类Dev

如何将C ++变量存储在INI,CFG或XML文件中?

来自分类Dev

如何使用C / C ++读取目录的文件索引?

来自分类Dev

pycparser如何读取C代码文件中包含的头文件?

来自分类Dev

C-如何读取整数文件,直到文件末尾

来自分类Dev

pycparser如何读取C代码文件中包含的头文件?

来自分类Dev

没有标识符时如何读取复杂的C ++类型声明?

来自分类Dev

从文件C ++读取对象

来自分类Dev

优化文件读取C ++

来自分类Dev

从文件C ++读取数据

来自分类Dev

C读取bmp文件

来自分类Dev

C ++读取CSV文件

来自分类Dev

从文件C ++读取数字

来自分类Dev

C ++从文件中读取

来自分类Dev

C ++文件读取错误

来自分类Dev

从文件读取图像-C ++

来自分类Dev

逐行读取C ++文件

来自分类Dev

C ++-读取文件错误