对于任何语法错误,我很抱歉,英语不是我的第一语言。
我的项目是从一个文件中读取(其行被布置为“整数”-“整数”,例如: 2-6)第一个整数表示骰子需要滚动的次数,第二个整数表示骰子上可能的面数(从上面的例子中,6面骰子被滚动了2次)。我正在努力使用数组从每一行中获取两个整数,以便我可以对它们进行操作。
有什么想法吗?
非常感谢!
发布于 2021-04-16 07:11:33
首先,构造一个struct (如果您愿意,也可以构造class )来将数据绑定到一个数据结构中,例如,所需的转卷和可能的面,如下所示:
struct Die {
int rolls;
int faces;
};在C++中,如果你需要一个动态数组,最好使用std::vector,因为很多内存管理(比如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)来处理。
https://stackoverflow.com/questions/67115476
复制相似问题