ncols 724 nrows 1025 xllcorner 871538.12834132 yllcorner 5029038.2419925 cellsize 120 NODATA_value -9999帮我写一个ue4 C++中根据换行分割字符串的代码
时间: 2024-02-14 09:17:57 浏览: 17
以下是一个基于UE4 C++中根据换行分割字符串的示例代码:
```cpp
// 输入的字符串
FString InputString = "ncols 724\nnrows 1025\nxllcorner 871538.12834132\nyllcorner 5029038.2419925\ncellsize 120\nNODATA_value -9999";
// 按照换行符分割字符串
TArray<FString> Lines;
InputString.ParseIntoArrayLines(Lines);
// 遍历每一行,输出每一行的内容
for (const FString& Line : Lines)
{
UE_LOG(LogTemp, Warning, TEXT("Line: %s"), *Line);
}
```
这里使用了`FString`的`ParseIntoArrayLines`函数来按照换行符分割字符串,并将结果存储在一个`TArray<FString>`中。然后使用一个简单的循环遍历每一行,并输出每一行的内容。
相关问题
用c++写一个程序并写注释,要求如下:打开文件"dem1.txt",依次读取文件里的ncols,nrows,xllcorner,yllcorner,cellsize参数, 随后读取所有的坐标高度存入数组。编写函数实现挖方面积、挖方体积、填方面积、填方体积的计算。 最后将挖方面积、挖方体积、填方面积、填方体积结果输出在屏幕上。
以下是使用C++语言编写的程序,请您参考:
```
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// 定义读取文件中的参数结构体
struct FileParams {
int ncols; // 列数
int nrows; // 行数
double xllcorner; // 左下角x坐标
double yllcorner; // 左下角y坐标
double cellsize; // 格子大小
};
// 读取文件中的参数
FileParams readFileParams(string fileName) {
FileParams params;
ifstream inFile(fileName);
if (inFile.is_open()) {
inFile >> params.ncols >> params.nrows >> params.xllcorner >> params.yllcorner >> params.cellsize;
inFile.close();
}
return params;
}
// 读取文件中的坐标高度
vector<vector<double>> readData(string fileName, int ncols, int nrows) {
vector<vector<double>> data(nrows, vector<double>(ncols, 0));
ifstream inFile(fileName);
if (inFile.is_open()) {
string line;
getline(inFile, line); // 读取第一行
for (int i = 0; i < nrows; i++) {
for (int j = 0; j < ncols; j++) {
inFile >> data[i][j];
}
}
inFile.close();
}
return data;
}
// 计算挖方面积
double calcCutArea(vector<vector<double>> data, double cellsize) {
double area = 0;
for (int i = 0; i < data.size(); i++) {
for (int j = 0; j < data[i].size(); j++) {
if (data[i][j] < 0) {
area += cellsize * cellsize;
}
}
}
return area;
}
// 计算挖方体积
double calcCutVolume(vector<vector<double>> data, double cellsize) {
double volume = 0;
for (int i = 0; i < data.size(); i++) {
for (int j = 0; j < data[i].size(); j++) {
if (data[i][j] < 0) {
volume += -data[i][j] * cellsize * cellsize;
}
}
}
return volume;
}
// 计算填方面积
double calcFillArea(vector<vector<double>> data, double cellsize) {
double area = 0;
for (int i = 0; i < data.size(); i++) {
for (int j = 0; j < data[i].size(); j++) {
if (data[i][j] > 0) {
area += cellsize * cellsize;
}
}
}
return area;
}
// 计算填方体积
double calcFillVolume(vector<vector<double>> data, double cellsize) {
double volume = 0;
for (int i = 0; i < data.size(); i++) {
for (int j = 0; j < data[i].size(); j++) {
if (data[i][j] > 0) {
volume += data[i][j] * cellsize * cellsize;
}
}
}
return volume;
}
int main() {
string fileName = "dem1.txt";
FileParams params = readFileParams(fileName);
int ncols = params.ncols;
int nrows = params.nrows;
double xllcorner = params.xllcorner;
double yllcorner = params.yllcorner;
double cellsize = params.cellsize;
vector<vector<double>> data = readData(fileName, ncols, nrows);
double cutArea = calcCutArea(data, cellsize);
double cutVolume = calcCutVolume(data, cellsize);
double fillArea = calcFillArea(data, cellsize);
double fillVolume = calcFillVolume(data, cellsize);
cout << "挖方面积: " << cutArea << endl;
cout << "挖方体积: " << cutVolume << endl;
cout << "填方面积: " << fillArea << endl;
cout << "填方体积: " << fillVolume << endl;
return 0;
}
```
以上程序通过读取文件中的参数和坐标高度,计算出挖方面积、挖方体积、填方面积和填方体积,并将计算结果输出在屏幕上。程序中的函数都有注释说明,希望能帮助您理解程序的实现。
sheet = data.sheet_by_index(0) lie=sheet.ncols hang=sheet.nrows
这段代码是用来读取 Excel 文件中第一个表格的列数和行数的。
其中 `data` 是读取到的 Excel 文件,`sheet_by_index` 表示根据表格的索引来获取表格数据,这里我们选择了第一个表格,所以索引为 0。
`ncols` 表示获取表格的列数,`nrows` 表示获取表格的行数。读取到的结果会分别存储在 `lie` 和 `hang` 变量中。