Wczytanie pliku do stringu.

0

Witam.
Chciałem napisać program, który wrzuci zawartość pliku tekstowego do stringa. Dodatkowo program ten po natrafieniu na przecinek zamieni go na kropkę. Niestety program nie działa tak jak chciałem. Po natrafieniu na spację program przestaje wczytywać pozostałą zawartość pliku a ja nie wiem jak temu zaradzić.
Proszę o pomoc w rozwiązaniu tego problemu.
Poniżej zamieszczam kod programu i plik tekstowy.

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
fstream plik;
char nazwa_pliku[50];
float baza[12][12];
string znak;
string plik_kopia;

for(int sukces = 0; !sukces; )
{
cout << "Podaj nazwe pliku z parametrami niezawodnosciowymi stacji SN/nn: ";
cin >> nazwa_pliku;
plik.open(nazwa_pliku);
if(!plik)
{
cout << "Bledna nazwa pliku!" << endl;
plik.clear(plik.rdstate() & ~ios::failbit);
}
else
{
sukces = 1;
plik.close();
}
}

plik.open(nazwa_pliku, ios::in);
do
{
plik >> znak;
if(znak == ",")
{
znak = ".";
plik_kopia.append(znak);
}
else
{
plik_kopia.append(znak);
}
}
while(plik.eof());
plik.close();

cout << plik_kopia;
cin.ignore();
getchar();
}

PLIK Z DANYMI DO OBLICZANIA NIEZAWODNOŚCI STACJI TRANSFORMATOROWYCH SN/nn


Urządzenie | Transformatory | Wyłączniki | Odłączniki |
--------------------------|--- ------------------------------ ---------|
Czas trwania awarii: | |
--------------------------|--- ------------------------------ ---------|
ta | 8,22 | 15.00 | 10.92 |
--------------------------|--- -------------|------------|--- ---------|
Intensywność awarii r | 65.10 | 85.95 | 25.13 |
--------------------------|--- -------------|------------|--- ---------|
Intensywność odnowy u | 1065,46 | 583.89 | 802.87 |
--------------------------|--- -------------|------------|--- ---------|
Współczynnik zawodności q | 6.11 | 14.72 | 3.13 |


0

zamiast:
plik>>znak
użyj:
znak=plik.get();

0
_13th_Dragon napisał(a)

zamiast:
plik>>znak
użyj:
znak=plik.get();

Dzięki za odpowiedź. Jednakże po zastosowaniu tej instrukcji program nie zatrzymuje się po na pierwszej spacji a po pierwszym znaku. Do stringa plik_kopia zostaje wpisana tylko litera P.

0

znak ma być typu char nie string.
a porównywać go masz z ',' zamieniać na '.' (w pojedynczych cudzysłowach)

0
_13th_Dragon napisał(a)

znak ma być typu char nie string.
a porównywać go masz z ',' zamieniać na '.' (w pojedynczych cudzysłowach)

Ok. Zrobiłem tak jak radzisz. Zamieniłem znak ze string na char. Zmieniłem też cudzysłowy. Jednak teraz podczas kompilacji pojawia się błąd w linijce: plik_kopia.append(znak).

0

plik_kopia+=znak;

0

Twoja wcześniejsza porada (znak = plik.get()) była dobra. Program nie działał dlatego bo zły był warunek przy instrukcji while. Powinno być while(!plik.eof()).
Wielkie dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1