sf.ReadString(strLine);//读掉角度观测值标识符 //开始读取角度观测值个数 sf.ReadString(strLine); int a = SplitStringArray(strLine, ',', aStr); iAngleObs = _ttoi(strLine); pAngleObs = new CAngleObs[iAngleObs]; for (int i = 0; i < iAngleObs; i++) { sf.ReadString(strLine); int n = SplitStringArray(strLine, ',', aStr); if (n < 3) { AfxMessageBox(_T("角度观测数据缺失")); return 0; } pAngleObs[i].pStation = SearchAllPoint(aStr[0]); pAngleObs[i].pObs = SearchAllPoint(aStr[1]); pAngleObs[i].ObsAngle(DMS) = _tstof(aStr[2]); } sf.Close(); IsReadData = 1; return 1;
时间: 2024-04-20 08:22:30 浏览: 189
根据您提供的代码段,这部分代码用于读取角度观测值的数据。
首先,使用 `sf.ReadString(strLine)` 从文件中读取一行数据,并将其丢弃,以读取角度观测值的标识符。
接下来,从文件中读取下一行数据到 `strLine` 变量中,并使用 `SplitStringArray()` 函数将其按逗号进行分割,分割结果存储在 `aStr` 字符串数组中。然后,将分割后的第一个元素转换为整数,赋值给变量 `a`。同时,将整行数据转换为整数类型,赋值给变量 `iAngleObs`,表示角度观测值的个数。
然后,使用 `new` 运算符创建了一个名为 `pAngleObs` 的 `CAngleObs` 对象数组,大小为 `iAngleObs`,用于存储角度观测值的信息。
接下来,使用一个循环来读取每个角度观测值的具体数据。在循环中,首先使用 `sf.ReadString(strLine)` 从文件中读取一行数据到 `strLine` 变量中。
然后,使用 `SplitStringArray()` 函数将 `strLine` 按逗号进行分割,并将分割后的结果存储在 `aStr` 字符串数组中。如果分割后的结果小于 3,表示角度观测数据缺失,会弹出一个消息框提示,并返回 0。
接着,通过调用 `SearchAllPoint(aStr[0])` 函数来搜索名为 `aStr[0]` 的点,并将搜索到的结果赋值给 `pAngleObs[i].pStation`。
然后,通过调用 `SearchAllPoint(aStr[1])` 函数来搜索名为 `aStr[1]` 的点,并将搜索到的结果赋值给 `pAngleObs[i].pObs`。
最后,将 `_tstof(aStr[2])`(以度分秒表示的观测角度)转换为浮点数,赋值给 `pAngleObs[i].ObsAngle(DMS)`。
循环会一直执行,直到读取完所有的角度观测值数据。
接下来,关闭文件流 `sf`,将 `IsReadData` 设置为 1,表示数据已读取完成,最后返回 1 表示成功读取数据。
请注意,代码中涉及到的 `SplitStringArray()`、`SearchAllPoint()` 和 `_tstof()` 函数可能是自定义的函数,您可能需要查看其他部分的代码来了解它们的实现和作用。
如果您有任何其他问题,请随时提问!
阅读全文