首先为类CCalculateCenterDlg定义一个较大的二维数组成员m_DataArry[100][100],实际读取数据中存放在该数组中,但是肯定用不完该数组的所有空间,实际使用的数组长度和宽度被保存在该类的成员变量m_iHeight 和 m_iWidth中。

例如:其思路可如下描述

定义了较大的二维数组10行9列,但是实际使用时可能只使用了6行3列,到时候引用时只要使用实际的行列数6和3而不是数组本身的行列数10和9就可以了,如下图1所示

图1 使用的二维数组


具体实现过程为:

1、修改项目的工程为多字节字符集

如图2红色框部分,该图为VS2005项目修改字符集的位置。【注意修改成多字节字符集之后,工程中的CString,char等字符转换时就不能使用中文了】


图2、修改文件的工程为多字节字符集

2、定义文件流对象

文件名字存储在对象CString csFileName中,每读取一行将进行解析并将改行数据存入数组中,的然后将数组的行数加1;

bool CCalculateCenterDlg::GetDataFromFile(CString csFileName)
{
fstream file(csFileName.GetBuffer());//注意输入文件名字及其路径中不能有汉字
if (!file)
return false;
char LineBuf[LINE_LENGTH];
m_iHeight = m_iWidth = 0;
bool bFindNewCol = false;
int iWidPos =0;
string sLineContent;
while(file.getline(LineBuf,LINE_LENGTH))
{
sLineContent = LineBuf;
ParseInputData(sLineContent);
++m_iHeight;
}
file.close();
return true;

}

注意:

(1)输入文件名字及其路径中不能有汉字

(2)二维数组m_DataArry[100][100]是CCalculateCenterDlg的成员变量:int m_DataArry[100][100];

(3)变量m_iHeight 和 m_iWidth 是CCalculateCenterDlg的成员变量;用于标识已经使用的数组长度和宽度

(4)CCalculateCenterDlg的成员函数ParseInputData主要用于处理读取的每一行数据,定义形式为:

bool ParseInputData(string sLineInfo);

3、解析每一行读取的数据到数组中:

voidCCalculateCenterDlg::ParseInputData(string sLineInfo)
{
int iWidth =0, iCurPos = 0, iInsertPos =0;
char DataUnit[8], curChar;
bool bFindData = false;
memset(DataUnit,0,8);
while(iCurPos<sLineInfo.length())
{
curChar = sLineInfo[iCurPos];
if (curChar != ' ' && curChar != ''&& curChar != '\n')
{
bFindData = true;
DataUnit[iInsertPos++] = curChar;
}
if (bFindData && (curChar == ' ' || curChar == '' || curChar == '\n'))
{
bFindData = false;
m_DataArry[m_iHeight][iWidth++] = atoi(DataUnit);
iInsertPos =0;
memset(DataUnit,0,8);
}
++iCurPos;
}
if (iWidth>m_iWidth)
{
m_iWidth = iWidth;
}

}

使用fstream在C++工程中读取文件到二维数组相关推荐

  1. matlab如何读取二维数组,Matlab从csv文件中读取多个二维数组

    我有一个csv文件,它包含2列4列数组,但行数不等.例如:Matlab从csv文件中读取多个二维数组 2, 354, 23, 101 3, 1023, 43, 454 1, 5463, 45, 765 ...

  2. node + ts读取csv文件为二维数组

    node + TypeScript读取csv文件为二维数组 CSDN用户名:jcLee95 邮箱:291148484@163.com 原创不易,感谢点赞支持. 在数据分析的时候经常需要读取csv格式的 ...

  3. 二维数组更改vue_使用vue中的v-for遍历二维数组的方法

    如下所示: {{itemss}} 其中,data数据为: this.data = [ [ { type: '', name: '资产', start: '期末余额', end: '期初余额' }, { ...

  4. 【IT】C语言函数中怎么返回一个二维数组

    C语言函数中怎么返回一个二维数组

  5. matlab中for循环设置二维数组,MATLAB中定义赋值一个二维数组

    MATLAB中定义赋值一个二维数组 答: 分号:; 因特网能提供的最基本服务 答:E-mail, WWW, FTP 劳动合同中,用人单位给予劳动者低于当地工资最低水平的违反了()合法原则 答:内容合法 ...

  6. python读取文件中的数据为二维数组变量_Numpy 多维数据数组的实现

    numpy包(模块)几乎总是用于Python中的数值计算.这个软件包为Python提供了高性能的向量.矩阵.张量数据类型.它是在C和Fortran中创建的,因此当计算被矢量化(用矩阵和矢量表示操作)时 ...

  7. 读取bmp格式位图文件到二维数组(C语言)

    本来是打算弄个BadApple玩玩,不过不满足于简单地读取文本文件并输出,所以最后变成了研究如何用C语言读取位图文件并通过二维数组来存储像素信息. 第一步自然是弄清楚bmp的文件格式.在各种位图格式中 ...

  8. javascript读取文本文件到二维数组代码_十行代码说清楚:leetcode 二维数组中的查找...

    剑指 Offer 04. 二维数组中的查找 这道题是将一维的二分查找扩展为二维数组中的二分查找. 关键点有 3 处: 起始点的选择 大于 target 时坐标的变化 小于 target 时坐标的变化 ...

  9. php 二维数组中去重,PHP实现二维数组去重功能示例

    PHP实现二维数组去重功能示例 发布于 2017-08-07 21:05:17 | 68 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Prep ...

最新文章

  1. php 标准输出到文件格式,php格式输出文件var_export函数实例
  2. python主要用于什么-python主要用于哪些方向
  3. 离线轻量级大数据平台Spark之MLib机器学习库TF-IDF实例
  4. eclipse中maven项目红叉解决方案
  5. Java用链表写图书管理_C语言链表实现图书管理系统
  6. 大数据之-Hadoop之HDFS_合并FsImage和Edits文件_之CheckPoint时间设置---大数据之hadoop工作笔记0072
  7. flex socket java_使用Java编写Socket服务器,并且与Flex通信(二)
  8. Nested Loop Join入门
  9. HIF转16位TIF或者PNG
  10. python提取pdf文字,python 提取pdf文字
  11. 热强化硅酸钠玻璃建筑玻璃英国UKCA认证—EN 1863-2
  12. 医学计算机应用基础实验报告word,word的操作——实验报告
  13. c1欧洲语言标准是什么水平,CEFR 为什么会成为全球语言标准体系?
  14. [DP]Apple Catching G
  15. 程序员如何变得更优秀?从业 10 年,我总结了 7 个建议
  16. react中findDOMNode
  17. 从技术趋势看质量赋能
  18. 二叉树的前序、中序、后序、递归以及非递归遍历
  19. mac 系统安装总结 二,dmg 文件安装
  20. 医疗器械中的大C中C小C

热门文章

  1. 列表是不是python数据类型的是_在Python中,一个列表中的数据类型是否可以不相同?(回答可以or不可以)...
  2. python字典循环添加元素_牛鹭学院:学员笔记|python字典、列表、循环
  3. 【Spark】Spark基本概念
  4. 计算最短路径的A* 算法简介
  5. ES6_对象简洁语法_note
  6. 无连接可靠传输_FPC连接器的特点以及弹片微针模组的作用
  7. jdbc mysql 存储过程查询数据_jdbc调用mysql存储过程实现代码
  8. python连接db2数据库 import的包_python 连接DB2数据库
  9. linux脚本定时运行脚本,linux定时运行命令脚本——crontab
  10. 中等职业学校计算机专业定位,中等职业学校计算机专业教学探讨