Hej,
Mam plik.txt o nazwie "lista" a w nim imiona i nazwiska:
Jan Kowalski
Anna Nowak
Jarosław Kaczor
Donald Kieł
Probuje napisac program sortujacy osoby alfabetycznie. Niestety caly czas otrzymuje wynik posortowanych liter dla Jana Kowalskiego:
JKaaiklnosw
Anna Nowak
Jarosław Kaczor
Donald Kieł
kod:
#include <iostream>
#include<fstream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
fstream file,file2;
int j = 0,k=0;
string* buffer,tmp;
file.open("lista.txt", ios::in);
if (file.is_open()) {
while (!file.eof()) {
getline(file, tmp);
j++;
}
file.seekg(0, ios::beg);
buffer = new string[j];
while(!file.eof()){
getline(file, buffer[k]);
k++;
}
file.close();
// for (int i = 0; i < k; i++) {
// cout << buffer[i] << endl;
// }
sort(buffer->begin(), buffer->end());
k = 0;
file2.open("sorted.txt", ios::out);
if (file2.is_open()) {
while(k<j){
file2 << buffer[k] << endl;
k++;
}
}
else {
cout << "Nie udalo sie stworzyc/otworzyc pliku sorted.txt" << endl;
}
file2.close();
}
else {
cout << "Nie udalo sie poprawnie otworzyc pliku" << endl;
}
return 0;
}
Dlaczego funkcja sort w tym przypadku sortuje tylko litery dla elementu buffer[0]?
Pierwszego while uzylem po to, aby zliczyc ilosc wierszy w pliku. Jak mozna inaczej to zrobic?
Jesli macie jakies sugestie lub wskazowki co do smaego kodu to tez chetnie przeczytam :)