Kezdőoldal » Számítástechnika » Programozás » C++-ban cast (konvertálás). Hogy?

C++-ban cast (konvertálás). Hogy?

Figyelt kérdés
Sziasztok! Abba a problémába ütköztem, hogy az egyik programomban adatokat kell beolvasnom file-bol egy string változóba, azt az értéket módosítani, majd vissza írni a file ba. Viszont az a gond, hogy a file ban számok vannak, de csak string típusba tudo őket behívni. És annak nem lehet növelni úgy az értékét, mint egy int típusnak, ezért abban kérem a ségítségeteket, hogy hogyan tudom a string típust int-é át cast-ni (átkonvertálni). (CodeBlocks- ot használok, ha segítene.). Előrre is kjöszöönöm a válaszaitokat. :D

2018. nov. 2. 10:25
 1/4 anonim ***** válasza:

google a barátod, kb 3mp volt

[link]

2018. nov. 2. 10:27
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
6%
C++-hoz nem értek, Java, Javascriptben van olyan függvény hogy parseInt() az ezt tudja, biztos Cppben is van
2018. nov. 2. 10:39
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
Beépített függvénnyel: stoi("25"), ez a <string> fejlécben van. Vannak még variánsai.
2018. nov. 2. 18:25
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

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.

2018. nov. 2. 19:38
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!