首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在c++中将整数(每行两个)从文本文件读取到不同的数组中

如何在c++中将整数(每行两个)从文本文件读取到不同的数组中
EN

Stack Overflow用户
提问于 2021-04-16 04:14:35
回答 1查看 42关注 0票数 0

对于任何语法错误,我很抱歉,英语不是我的第一语言。

我的项目是从一个文件中读取(其行被布置为“整数”-“整数”,例如: 2-6)第一个整数表示骰子需要滚动的次数,第二个整数表示骰子上可能的面数(从上面的例子中,6面骰子被滚动了2次)。我正在努力使用数组从每一行中获取两个整数,以便我可以对它们进行操作。

有什么想法吗?

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-04-16 07:11:33

首先,构造一个struct (如果您愿意,也可以构造class )来将数据绑定到一个数据结构中,例如,所需的转卷和可能的面,如下所示:

代码语言:javascript
运行
复制
struct Die {
    int rolls;
    int faces;
};

在C++中,如果你需要一个动态数组,最好使用std::vector,因为很多内存管理(比如new/delete)都被抽象出来了。所以,我们需要的是一个Die数组,即std::vector<Die>。现在剩下的就是读取数据了。首先,一些错误处理

代码语言:javascript
运行
复制
std::ifstream inp("test.txt");

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

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

代码语言:javascript
运行
复制
std::vector<Die> arr;

现在,很容易逐个读取Die的元素:

代码语言:javascript
运行
复制
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)来处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67115476

复制
相关文章

相似问题

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