C++-ban cast (konvertálás). Hogy?
google a barátod, kb 3mp volt
Például
A fájl:
ertek: 1
alma = 4
barack 3
--------------------------------
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
...
int counter = 0;
ifstream in("file.txt");
string line;
struct Adat {
string kulcs;
int ertek;
};
vector<Adat> adatok;
if (in.is_open())
while (getline(in, line)) {
//cout <<line << endl;
adatok.push_back(Adat());
adatok[counter].kulcs = line.substr(0, line.find_last_of(' ')); //így az elválasztó jel is benne lesz, azt el lehet tüntetni, ha kivonunk bizonyos számot a 2. paraméterből, pl.: line.substr(0, line.find_last_of(' ')-1);
adatok[counter].ertek = stoi(line.substr(line.find_last_of(' '), line.length()));
counter++;
}
for (Adat a : adatok) cout <<a.kulcs << "\t" << a.ertek << endl;
...
--------------------------------
Ha nincs szóköz a kulcs és az érték között, akkor az adott jelre kell keresni, pl. ha
alma=4
line.find_last_of('=')
Aztán ezeket fájlba is lehet írni, pl.
for (Adat a : adatok) out << a.kulcs << " = " << a.ertek << endl;
-----------
Egy másik elképzelés
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int muveletek(int n) {
// muveletek... pl.:
n *= 2;
return n;
}
int main()
{
int counter = 0;
ifstream in("file.txt");
ofstream out("file2.txt");
string line;
if (in.is_open())
while (getline(in, line)) {
cout << line << endl;
out << line.substr(0, line.find_last_of(' ')) << "\t" << muveletek(stoi(line.substr(line.find_last_of(' '), line.length()))) << endl;
counter++;
}
cin.get();
}
A line.length() nem mindig ad jó értéket, néha többet, fájltól függ.
Át lehet írni float-ra, stb-re is, viszont ha vannak olyan sorok is a fájlban, amiben nincs ilyen kulcs - érték pár, akkor azt külön kell kezelni, ami a fájl felépítésétől függ.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!