从.txt文件中获取混合数字值
Getting mixed number values from a .txt file
我试图为一个类创建一个程序,该程序可以在格式整,整num/dom或num/dom的数字中读取到矩阵。文件的格式始终是第一行中的row和col作为前两个值。之后,文件可以有不同类型的数字,例如,这是我当前的txt文件:
2 2
1 1/2 2 1/4
3 1/3 4 1/5
首先使用
查找行和colin >> row >> col;
并且使用这个结构体:
struct mixedNumber
{
int whole, num, denom;
void output();
};
创建一个动态数组:
mixedNumber* matrix[row];
for(int i = 0; i < row; i++)
matrix[i] = new mixedNumber[col];
现在我遇到的麻烦是找出输入的哪些部分是混合数的哪些部分。对于我的例子来说,这很简单,现在我使用这个函数:
void fillMatrix(mixedNumber *matrix[], ifstream &in, int row, int col)
{
char junk;
for(int i = 0; i < row; i++)
for(int j = 0; j < col; j++)
in >> matrix[i][j].whole >> matrix[i][j].num >> junk >> matrix[i][j].denom;
}
只有在文本文件中每个位置总是有三个数字时才有效。但是具有不同数量类型的txt文件,例如:
2 3
1 1/2 2 1/2
1 1/4 2/3 3
不会被正确读取,老实说,即使看着它也几乎不可能分辨出这些数字是什么:
[(1) (1/2) (2 1/2)]
[(1 1/4) (2/3) (3)]
那么这是可能的吗?或者像[0 1/2 1 0/1]这样的占位符是否需要在每个数字周围存在或括号,以告诉数字的含义。
遗憾的是,这是不可能做你想做的。
只是因为这个格式有歧义。
。如下
所示的矩阵1 3
1 1/2 1 1/2
可以表示…
[(1), (1/2), (1 1/2)]
还是……
[(1 1/2), (1), (1/2)]
没有办法根据你的格式消除歧义。
必须加上零或找到其他方法来消除歧义,如使用逗号
。
1 3
1, 1/2, 1 1/2
基本上需要两个分隔符。
另一个替代
另一个常用的替代方法是用换行符分隔每个数字。你看,如果你要在文件中写下矩阵的每一个数字,那么你不必把它写成行。
一个类似
的矩阵2 3
1 1/2 1 1/2
2 1/2 3 1/2
也可以表示为
2 3
1
1/2
1 1/2
2 1/2
3
1/2
这个格式不会有歧义。您只需遍历数字流并按行填充矩阵。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 混合组合和继承的C++问题
- 视觉 如何将混合的字母和数字转换为仅字母?C++
- 混合数字类istream问题
- 混合数字类操作数重载C++
- 为什么在尝试读取数字和非数字混合输入时有些字符串会被截断,如下面的代码所示
- 从.txt文件中获取混合数字值
- 在c++ /Qt中拆分Lua函数调用的混合字符串/数字参数列表