繁体   English   中英

如何从 c++ 中的文本文件将整数(每行两个)读入单独的 arrays

[英]how to read integers (two per line) into separate arrays from a text file in c++

为任何语法错误道歉,英语不是我的第一语言。

我的项目是从文件中读取(其行布局为“整数”-“整数”,例如:2-6)第一个整数表示需要掷骰子的次数,第二个 integer 表示数字骰子上可能的面数(来自上面的例子;一个 6 面骰子被掷了 2 次)。 我正在努力使用 arrays 从每一行中获取两个整数,以便我可以操纵它们。

任何想法?

非常感谢!!!

首先,构造一个struct (或class ,如果您愿意)将您的数据(即所需的滚动和可能的面)绑定到一个数据结构中,例如:

struct Die {
    int rolls;
    int faces;
};

在 C++ 中,如果您需要一个动态数组,最好使用std::vector ,因为很多内部 memory 管理(如new / delete )被抽象掉了。 所以,我们需要的是一个Die数组,即std::vector<Die> 现在剩下的只是读取数据。 一、一些错误处理

std::ifstream inp("test.txt");

//if error opening file display Error
if(!inp){
    std::cout << "Error opening file";
    return 1;
}

这摆脱了文件打开错误。 接下来,我们创建一个空的Die元素数组。

std::vector<Die> arr;

现在,一个一个地读入Die的元素很简单:

Die die;
while(inp>>std::ws>>die.rolls) {
    inp.ignore(std::numeric_limits<std::streamsize>::max(), '-');
    inp>>std::ws>>die.faces;
    arr.push_back(die);
}

std::ws只是忽略输入文件行中的所有空格。 inp.ignore()部分基本上读取并忽略代码中指定的-之前的所有字符,然后在忽略-字符后读取die.faces 就是这样,读取一行数字,如2-6 现在只需要重复直到文件没有更多数据要读取,这由while条件while(inp>>std::ws>>die.rolls)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM