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

[c++] otwieranie pliku

Ostatnio zmodyfikowano 2012-05-19 01:17
Autor Wiadomość
slade13
Temat założony przez niniejszego użytkownika
[c++] otwieranie pliku
» 2012-05-18 23:19:48
Witam, napisałem prosty kod do otwierania pliku i nie mogę dostrzec błędu:
C/C++
#include<iostream>
#include<string>
#include<fstream>
#include<conio.h>

using namespace std;

void otw_plik( string pliczek )
{
    std::fstream plik; //zmienna przechowujaca plik
    plik.open( "pliczek", std::ios::in | std::ios::out ); //otwarcie pliku i nadanie praw
   
    if( plik.good() == true ) //sprawdzenie poprawności dostępu do pliku
    {
        cout << "uzyskano dostep do pliku!" << endl; //dostep uzyskany
    } else cout << "Dostep do pliku zostal zabroniony!" << endl;
   
}

int main()

{
    string plik = "plik.txt"; //adres pliku
    otw_plik( plik ); //wywołanie funkcji otw_plik
    getch();
}
P-56948
szyx_yankez
» 2012-05-18 23:25:02
Przemyśl tą linijkę:
plik.open( "pliczek", std::ios::in | std::ios::out );
P-56949
slade13
Temat założony przez niniejszego użytkownika
» 2012-05-19 00:07:10
właśnie nie wiem jak to zrobić, bo jeżeli zmienna jest w cudzysłowie, to jest traktowana jako tekst, za dużo w php siedziałem i nie ogarniam teraz operacji na plikach w c++  ;x
P-56952
diego997
» 2012-05-19 00:15:21
bez cudzyslowia ;p
P-56954
slade13
Temat założony przez niniejszego użytkownika
» 2012-05-19 00:33:04
Przy takiej linijce kodu:
plik.open( pliczek, std::ios::in | std::ios::out );
otrzymuję błąd przy kompilacji:
C:\Users\*\*\*.cpp||In function 'void otw_plik(std::string)':|
C:\Users\*\*\*.cpp|11|error: no matching function for call to 'std::basic_fstream<char, std::char_traits<char> >::open(std::string&, std::_Ios_Openmode)'|
c:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\fstream|865|note: candidates are: void std::basic_fstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]|
||=== Build finished: 1 errors, 0 warnings ===|
P-56955
diego997
» 2012-05-19 00:42:53
a spróbuj zamiast tego
C/C++
plik.open( pliczek, std::ios::in | std::ios::out );

dać to

C/C++
plik.open( pliczek.c_str(), std::ios::in | std::ios::out );
P-56956
slade13
Temat założony przez niniejszego użytkownika
» 2012-05-19 01:12:18
No działa! Ale na jakiej zasadzie? Skąd się to wzięło? :D
P-56957
akwes
» 2012-05-19 01:17:31
"dsadsdsadsadsa" <- to jest zwykły string, zwany cstrigiem. Czyli tablica liter zakończona znakiem NULL. Można to nazwać char[] lub char *.

std::string jest to rozbudowana klasa przechowująca string oraz udostępniająca odpowiednie funkcje, jedną z tych funkcji (c_str()) jest zwrócenie cstringu (patrz wyżej).


Funkcja otwierająca plik przyjmuje cstring, dlatego trzeba jej dać cstring.
P-56958
« 1 »
  Strona 1 z 1