![](/img/trans.png)
[英]How to read alternating lines of text in a file to separate arrays in C++?
[英]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.