Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++/UNIX] Obsługa plików, nadpisywanie linii w pliku tekstowym.

Ostatnio zmodyfikowano 2015-01-13 20:37
Autor Wiadomość
GigaByte23
Temat założony przez niniejszego użytkownika
[C++/UNIX] Obsługa plików, nadpisywanie linii w pliku tekstowym.
» 2015-01-13 20:10:17
Witam Szanownych Forumowiczów!
Zajmuję się projektem który obsługuje Pliki tekstowe.
Otóż. Sprawa wygląda następująco:
Program który piszę powinien pracować na pliku tekstowym 'bezpośrednio'.
Została mi sprawa nadpisywania linii w pliku tekstowym,
Słowem:

Zawartośc pliku tekstowego przed edycją:
1. abcd efg hijk
2. lmno prs tuw
3. xyza bcd efg

Użytkownik wybiera którą linię chce nadpisać, załóżmy że 2 - 'lmno prs tuw'
oraz wprowadza nowe dane do stringa lub tablicy typu char np: 'qwer tyu iop' , i nadpisuje linię tymi danymi:

Zawartość pliku tekstowego po edycji:
1. abcd efg hijk
2. qwer tyu iop
3. xyza bcd efg

Bazując na kodzie użytkownika ISON, który służy do usuwania wybranej linii,
Czy uda się w podobny sposób (podobnym kodem) zamiast usunąć, nadpisać linię?:
C/C++
#include <fstream>
#include <string>
#include <vector>

void kasuj_wiersz( const std::string sciezka, const size_t wiersz )
{
    std::vector < std::string > vec;
    std::ifstream in( sciezka.c_str() );
    std::string tmp;
    while( getline( in, tmp ) ) vec.push_back( tmp );
   
    in.close();
    std::ofstream out( sciezka.c_str() );
    for( size_t i = 0; i < vec.size(); ++i ) {
        if( i + 1 != wiersz ) out << vec[ i ] << std::endl;
       
    }
    out.close();
}

int main()
{
    kasuj_wiersz( "aaa.txt", 2 );
}
Za wszelkie odpowiedzi dziękuję!
P-124828
stryku
» 2015-01-13 20:27:56
Jasne
C/C++
#include <fstream>
#include <string>
#include <vector>

void zamien_wiersz( const std::string sciezka, const std::string nowaLinia, const size_t wiersz )
{
    std::vector < std::string > vec;
    std::ifstream in( sciezka.c_str() );
    std::string tmp;
    while( getline( in, tmp ) ) vec.push_back( tmp );
   
    in.close();
    std::ofstream out( sciezka.c_str() );
    for( size_t i = 0; i < vec.size(); ++i ) {
        if( i + 1 != wiersz ) out << vec[ i ] << std::endl;
        else out << nowaLinia << std::endl;
       
    }
    out.close();
}

int main()
{
    zamien_wiersz( "aaa.txt", 2, "siema" );
}
P-124832
GigaByte23
Temat założony przez niniejszego użytkownika
Dziękuję :)
» 2015-01-13 20:37:42
Dziękuję! Jesteś Wielki, działa :)
P-124836
« 1 »
  Strona 1 z 1