MFC读取obj格式文件2

前文读取了obj格式文件中顶点相关的数量信息,下面读取显示obj格式文件中顶点相关的坐标信息;使用前面的立方体obj文件;

cpp 复制代码
void CObjtest2View::OnDraw(CDC* pDC)
{
	CObjtest2Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here

	CStdioFile file;
	CString strline;
	CString str1;
	int row=0,col=0;
 
	if(NULL != file.Open("cube1.obj", CFile::modeRead))
	{
		while (file.ReadString(strline))
		{
			if (strline[0] == 'v') {
				if (strline[1] == 'n') {//vn
					pDC->TextOut(75, 230, "法线:");
					for (int i=1; i<5; i++)
					{
						 AfxExtractSubString(str1, strline, i, ' ');
						 pDC->TextOut(50+(col+1)*100, 90 + row*20, str1);
						 col = col + 1;
					}
					row = row + 1;
					col = 0;
				}
				else if (strline[1] == 't') {//vt
					pDC->TextOut(75, 390, "UV坐标:");
					for (int i=1; i<5; i++)
					{
						 AfxExtractSubString(str1, strline, i, ' ');
						 pDC->TextOut(50+(col+1)*100, 130 + row*20, str1);
						 col = col + 1;
					}
					row = row + 1;
					col = 0;
				}
				else {//v
					pDC->TextOut(75, 30, "位置:");
					for (int i=1; i<5; i++)
					{
						 AfxExtractSubString(str1, strline, i, ' ');
						 pDC->TextOut(50+col*100, 50 + row*20, str1);
						 col = col + 1;
					}
					row = row + 1;
					col = 0;
				}
			}
 
			if (strline[0] == 'f') {
				//fNum++;
			}
		}
		file.Close();
	}
	else
	{
		AfxMessageBox("文件打开失败!");
	}
}

还是使用CStdioFile类打开文件;循环每次读取一行;根据一行的开头字符为 v/vt/vn ,分别进行处理;

使用 AfxExtractSubString(str1, strline, i, ' ') 从一行中取出单个字符串;第一个参数是本次取到的字符串,第二个参数是待分割的字符串,第三个参数是取的位置,第四个参数是分割用的字符,这里是用空格来分割;

运行如下;

相关推荐
木子.李3473 小时前
排序算法总结(C++)
c++·算法·排序算法
freyazzr4 小时前
C++八股 | Day2 | atom/函数指针/指针函数/struct、Class/静态局部变量、局部变量、全局变量/强制类型转换
c++
fpcc5 小时前
跟我学c++中级篇——理解类型推导和C++不同版本的支持
开发语言·c++
终焉代码6 小时前
STL解析——list的使用
开发语言·c++
DevangLic6 小时前
【 *p取出内容 &a得到地址】
c++
鑫鑫向栄6 小时前
[蓝桥杯]修改数组
数据结构·c++·算法·蓝桥杯·动态规划
鑫鑫向栄6 小时前
[蓝桥杯]带分数
数据结构·c++·算法·职场和发展·蓝桥杯
m0_552200827 小时前
《UE5_C++多人TPS完整教程》学习笔记37 ——《P38 变量复制(Variable Replication)》
c++·游戏·ue5
小wanga7 小时前
【递归、搜索与回溯】专题三 穷举vs暴搜vs回溯vs剪枝
c++·算法·机器学习·剪枝
Code_流苏8 小时前
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
开发语言·c++·stl容器·课设·期末大作业·日历程序·面向对象设计