Baza danych zapis do pliku
Ostatnio zmodyfikowano 2013-02-08 21:02
Hipochondryk Temat założony przez niniejszego użytkownika |
Baza danych zapis do pliku » 2013-02-08 11:37:40 Witam kolejna baza i kolejny problem. Otóż po wprowadzeniu danych do stringu i wyswietleniu jest ok, lecz po zapisaniu do pliku wyskakują krzaczki np dla danych wejsciowych a b c d e f wyjscie powinno wyglądać 00002|a|b|c|d|e|f a wygląda : 〰〰簲簱簲簳簴簵簶††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ഠ《〰㈰ㅼ㉼㍼㑼㕼㙼⁼††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††〰〰簲愠换摼晥杼楨橼汫㉼㑼⁼†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ഠ załączam dotychczasowy kod kod : Czy możecie pomóc mi z rozwiązaniem i zrozumieniem tego problemu ? Problem tkwi moim zdaniem gdzieś wew. funkcji dodawaj.
#include <iostream> #include <fstream> #include <string> #include <conio2.h> #include <cstdio> #include <windows.h>
#define KR cout<<"|"; #define TG textcolor (LIGHTGREEN); #define NLINIA cout<<endl; #define CLS system("cls"); #define STOP system("pause");
using namespace std;
void menu(); void dodawaj(); int konwertuj( int );
int main() { menu(); int w = 0; while( !w ) w = getch(); CLS switch( w ) { case 49: cout << " Wybrano wyszukanie w bazie"; break; case 50: dodawaj(); break; case 51: cout << " wybrano wyjscie"; return 0; default: cout << "Error #003"; } STOP return 0; }
void menu() { TG cout << " _______________________________________________"; NLINIA KR cout << " Witaj w bazie danych Hurtowni Informatycznej "; KR NLINIA KR cout << "-----------------------------------------------"; KR NLINIA KR cout << "1) Wyszukaj w bazie. "; KR NLINIA KR cout << "2) Dodaj do bazy. "; KR NLINIA KR cout << "3) Wyjdz. "; KR NLINIA KR cout << "-----------------------------------------------"; KR NLINIA KR cout << "Wcisnij odpowiedni numer. "; KR NLINIA KR cout << "_______________________________________________"; KR NLINIA }
void dodawaj() { fstream baza; baza.open( "baza_danych.txt", ios::out | ios::app | ios::ate ); if( baza.is_open() ) { string dodaj, temp; int liczba_rekordow = 2; if( liczba_rekordow < 10 ) { dodaj += "0000"; dodaj += konwertuj( liczba_rekordow ); } else if( liczba_rekordow < 100 ) { dodaj += "000"; dodaj += konwertuj( liczba_rekordow / 10 ); dodaj += konwertuj( liczba_rekordow % 10 ); } else if( liczba_rekordow < 1000 ) { dodaj += "00"; dodaj += konwertuj( liczba_rekordow / 100 ); dodaj += konwertuj(( liczba_rekordow / 10 ) % 10 ); dodaj += konwertuj( liczba_rekordow % 10 ); } else if( liczba_rekordow < 1000 ) { dodaj += "0"; dodaj += konwertuj( liczba_rekordow / 1000 ); dodaj += konwertuj(( liczba_rekordow / 100 ) % 10 ); dodaj += konwertuj(( liczba_rekordow / 10 ) % 10 ); dodaj += konwertuj( liczba_rekordow % 10 ); } else { dodaj += konwertuj( liczba_rekordow / 10000 ); dodaj += konwertuj(( liczba_rekordow / 1000 ) % 10 ); dodaj += konwertuj(( liczba_rekordow / 100 ) % 10 ); dodaj += konwertuj(( liczba_rekordow / 10 ) % 10 ); dodaj += konwertuj( liczba_rekordow % 10 ); } dodaj += '|'; cout << "Podaj prosze nazwe produktu : "; getline( cin, temp ); dodaj += temp; dodaj += '|'; cout << "Podaj Producenta : "; getline( cin, temp ); dodaj += temp; dodaj += '|'; cout << "Podaj kategorie produktu : "; getline( cin, temp ); dodaj += temp; dodaj += '|'; cout << "Wpisz opis : "; getline( cin, temp ); dodaj += temp; dodaj += '|'; cout << "Ile sztuk ?"; getline( cin, temp ); dodaj += temp; dodaj += '|'; cout << "cena netto: "; getline( cin, temp ); dodaj += temp; dodaj += '|'; if( dodaj.size() < 200 ) dodaj.resize( 199, ' ' ); baza << dodaj << '\n'; } else cout << "Error #001" << endl; baza.close(); }
int konwertuj( int l ) { switch( l ) { case 0: return 48; case 1: return 49; case 2: return 50; case 3: return 51; case 4: return 52; case 5: return 53; case 6: return 54; case 7: return 55; case 8: return 56; case 9: return 57; } }
string dodaj, po wyswietleniu zawartosci posiada porządaną wartość, lecz plik już nie. Dziękuje i pozdrawiam Artur Lisowski |
|
krzyk |
» 2013-02-08 13:31:19 Mi to działa,może masz ustawione dziwne kodowanie tekstu.
A ponizszy kod zastępuje całe Twoje konwertuj.
#include <iomanip> cout << setfill( '0' ) << setw( 5 ); cout << 14 << endl; |
|
Hipochondryk Temat założony przez niniejszego użytkownika |
» 2013-02-08 14:12:27 to już nie pierwszy raz gdy mam problem z zapisem do pliku. za każdym razem inny problem. Jak zmienic kodowanie? |
|
krzyk |
» 2013-02-08 21:02:31 Mi też wychodzą szlaczki w pliku ale tylko przy literach typu ąęćż.
Przy odczycie z pliku i tak wszystko poprawnie odczytuje. |
|
« 1 » |