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

Zapisywanie do pliku przy pomocy operatora <<

Ostatnio zmodyfikowano 2014-08-26 16:34
Autor Wiadomość
jizzle
Temat założony przez niniejszego użytkownika
Zapisywanie do pliku przy pomocy operatora <<
» 2014-08-26 09:35:45
C/C++
ifstream file;
file.open( "data//data.txt", ios::out );
string a = "costam";
file << a;

Po wielu nieudanych próbach, żywcem przepisałem kod z kursu, natomiast kompilator wywala mi błąd:
error: no match for 'operator<<' (operand types are 'std::ifstream {aka std::basic_ifstream<char>}' and 'std::string {aka std::basic_string<char>}')|
P-116104
Jacob99
» 2014-08-26 09:45:08
"data//data.txt"
slasha nie pisze się podwójnie w nazwie pliku. Podwójnie trzeba zapisać tylko backslasha, bo jest on znakiem specjalnym.

I spróbuj zapisać tak:
file << a.c_str();

I podaj dalszą część logu, bo gdy wywala tai błąd to dalej powinno wypisać coś takiego:
note: candidates are:
...
np.
note: candidates are:
std::ifstream::operator<< (const std::basic_string){aka std::basic_ifstream::operator<<(conststd::basic_string)}
 
P-116105
pekfos
» 2014-08-26 10:00:19
Podaj cały kod.
P-116106
jizzle
Temat założony przez niniejszego użytkownika
» 2014-08-26 10:08:12
'/' to backslash, .c_str() już próbowałem, a dalsza część logu jest hiper długa, ale wygląda tak:
note: candidates are:
c:\program files (x86)\codeblocks\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h|2753|note: template<class _CharT, class _Traits, class _Alloc> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&)
c:\program files (x86)\codeblocks\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h|2753|note:   template argument deduction/substitution failed:
main.cpp|12|note:   'std::ifstream {aka std::basic_ifstream<char>}' is not derived from 'std::basic_ostream<_CharT, _Traits>'
[...]
dalej ten sam błąd dla różnych linii pliku nagłówkowego basic_string.h

@pefkos
C/C++
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>

using namespace std;

void nadpisz() {
    ifstream file;
    file.open( "data//data.txt", ios::out );
    string a = "1 ";
    file << a;
    a = "2";
    file << a;
    file.close();
}

int main() {
    nadpisz();
    return 0;
}
P-116108
Monika90
» 2014-08-26 10:10:14
Nie mozna zapisywać niczego do ifstream, bo ifstream służy do czytania z pliku, użyj ofstream.
P-116109
jizzle
Temat założony przez niniejszego użytkownika
» 2014-08-26 10:15:33
no właśnie, tak wydedukowałem z podstawowego kursu, ale tu http://cpp0x.pl/kursy/Kurs-C++​/Obsluga-plikow/305 jest napisane:
C/C++
std::fstream plik;
plik.open( "nazwa_pliku.txt", std::ios::in | std::ios::out );
aa, nie ma i :P sorry i dzięki
P-116111
Jacob99
» 2014-08-26 16:34:46
P-116139
« 1 »
  Strona 1 z 1