Ahoj,
PROSÍM o pomoc. Mám v C++ napsaný kod, díky kterému jsem schopen pracovat a eliminovat určitou část textáku a následně vypsat data do nového souboru. Jedná se o texťák se souřadnicemi a barevnou škálou: x, y, z, odrazivost, r, g, b.
Zápis v C++
#include "stdafx.h"
#include <iostream> // std::cout
#include <fstream> // std::ifstream
#include <string>
#include <sstream>
#include <time.h>
#include <ctime>
const int COLUMNS = 7;
struct radek
{
float x; //POZNAMKY:
float y; //vytvorit funkci
float z; //vyhledat min, max z celeho Mracna souboru pro lepsi orientaci zadavani mezi - casova narocnost?????
float odrazivost; //zjistit kolik mista zabira radek - vytvorit deleni dle velikosti
float r; //spravit datum time_t - VYVOLAT FUNKCI DATUM NA SPRÁVNÉM MÍSTĚ V KODU
float g;
float b;
};
using namespace std;
radek MakeRow(float pole[7])
{
radek soucasnejRadek;
soucasnejRadek.x = pole[0];
soucasnejRadek.y = pole[1];
soucasnejRadek.z = pole[2];
soucasnejRadek.odrazivost = pole[3];
soucasnejRadek.r = pole[4];
soucasnejRadek.g = pole[5];
soucasnejRadek.b = pole[6];
return soucasnejRadek;
}
float main()
{
float mez_X[2];
float mez_Y[2];
float mez_Z[2];
int pocetRadku;
std::string filename;
std::string filenameOUT = "Vysledek_Cisla_Dle_Souradnic";
std::ifstream ifs(filename.c_str(), std::ifstream::in);
std::ofstream ofs(filenameOUT.c_str(), std::ofstream::out);
if (ifs.is_open() && ofs.is_open())
{
std::string line;
while (std::getline(ifs, line))
{
std::istringstream ss(line);
radek soucasnejRadek;
if (!(ss >> soucasnejRadek.x >> soucasnejRadek.y >> soucasnejRadek.z >> soucasnejRadek.odrazivost >> soucasnejRadek.r >> soucasnejRadek.g >> soucasnejRadek.b))
{
continue;
}
if (mez_X[0] <= soucasnejRadek.x && mez_X[1] >= soucasnejRadek.x)
{
if (mez_Y[0] <= soucasnejRadek.y && mez_Y[1] >= soucasnejRadek.y)
{
if (mez_Z[0] <= soucasnejRadek.z && mez_Z[1] >= soucasnejRadek.z)
{
a++;
pocetRadku = a;
ofs << soucasnejRadek.x << " " << soucasnejRadek.y << " " << soucasnejRadek.z << " " << soucasnejRadek.odrazivost << " " << soucasnejRadek.r << " " << soucasnejRadek.g << " " << soucasnejRadek.b << '\n';
}
}
}
}
ifs.close();
ofs.close();
}
else
{
std::cout << "Error opening file";
}
V podstatě jde o to, že mám vytvořenou strukturu s proměnýma a pak načítám jednotlivý řádek (může jich být v tom texťáku teřba i 40mil.) a dle podmínky vypisuju jednotlivé řádky do nového souboru. Tím prostě eliminuju to co nechci... Ale nejsem schopen tohle přepsat do C#. konkrétně nevím, jak vytvořit tu strukturu s polem (Radek (MakeRow(...)). A pak nevím jak na ten stringstream ss(line), kde přes operátor >> načítám data ze streamu a testuji stav streamu.
Neporadil by mi PROSÍM někdo, jak to přepsat do C#? Díky za každou radu.
Texťák vypadá asi tak
-2.527664 -6.172501 -1.749588 -1557 55 45 44
-18.999893 -22.491531 -0.102524 -1648 47 36 34
-24.240677 -24.054489 -0.108078 -1570 42 35 34
-24.530594 -25.052109 -1.108261 -1120 77 58 53