• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

fstream pobieranie nazwy pliku od użytkownika i tworzenie pliku o tej nazwie.

Object Storage Arubacloud
0 głosów
671 wizyt
pytanie zadane 11 sierpnia 2019 w C i C++ przez Bulbi Początkujący (250 p.)

Program podczas działania ma pobierać nazwę pliku od użytkownika i stworzyć plik o tej nazwie.

#include <iostream>
#include <fstream>

using namespace std;

string nazwa_p;

int main()
{

    cout << "Witaj podaj nazwe pracownika ktorego chcesz dodac : " << endl;
    cin >> nazwa_p;
    ofstream plik(nazwa_p.txt); # Dokladnie tu mam problem nie wiem jak zapisac kod aby 
podana przez uzytkownika nazwa stala sie plikiem
    plik << "Eglebegle";
    return 0;
}

 

1
komentarz 11 sierpnia 2019 przez tkz Nałogowiec (42,000 p.)

nazwa_p.txt ta zmienna nigdzie nie istnieje. Stworzyłeś zmienną nazwa_p;


#include <iostream>
#include <fstream>
 
using namespace std;
 
string nazwa_p;
 
int main()
{
    cout << "Witaj podaj nazwe pracownika ktorego chcesz dodac : " << endl;
    cin >> nazwa_p;
    ofstream plik(nazwa_p+".txt"); //tutaj musisz dodać postfix, po prostu go dodać do nazwy. 
    plik << "Eglebegle";
    return 0;
}

Tak poza tym, komentarze to //, nie #. 

komentarz 11 sierpnia 2019 przez Bulbi Początkujący (250 p.)
edycja 11 sierpnia 2019 przez Bulbi

Wielkie dzieki dopiero zaczynam ale nie mam pojecia dlaczego nadal wyskakuje blad 

Po edycji kodu na :
 

#include <iostream>
#include <fstream>

using namespace std;

string nazwa_p;

int main()
{
    cout << "Witaj podaj nazwe pracownika ktorego chcesz dodac : " << endl;
    cin >> nazwa_p;
    ofstream plik(nazwa_p.c_str() + '.txt'); // nie wiem czemu jeśli napisze to w ten sposob "txt" To nie dziala
    plik << "Eglebegle";
    return 0;
}

 

Program uruchamia się wpisuje dane ale plik się nie pojawia i wyskakuje taki komunikat w kompilatorze : Process terminated with status -1073741819 (0 minute(s), 9 second(s))

 

edit : 

kod zmodyfikowalem jeszcze w ten sposob :

#include <iostream>
#include <fstream>

using namespace std;

string nazwa_p;

int main()
{
    cout << "Witaj podaj nazwe pracownika ktorego chcesz dodac : " << endl;
    cin >> nazwa_p;
    ofstream plik(std::string str = nazwa_p + std::string(".txt"));
    return 0;
}

Teraz nie wyskakuje żaden błąd ale mój plik tekstowy nadal się nie tworzy

komentarz 11 sierpnia 2019 przez tkz Nałogowiec (42,000 p.)

Metoda .c_str() konwertuje stringa na tablice charów, dlatego. Skoro korzystasz z std::string, to nie widzę sensu by konwertować to na chary. 

#include <iostream>
#include <fstream>
 
using namespace std;
 
string nazwa_p;
 
int main()
{
    cout << "Witaj podaj nazwe pracownika ktorego chcesz dodac : " << endl;
    cin >> nazwa_p;
    nazwa_p+=".txt"; //zrób tak
    ofstream plik(nazwa_p);
    return 0;
}


 

komentarz 11 sierpnia 2019 przez Bulbi Początkujący (250 p.)
Jeśli zrobie to w ten sposób to wyskakuje mi taki błąd :

error: no matching function for call to 'std::basic_ofstream<char>::basic_ofstream(std::__cxx11::string&)'|
komentarz 11 sierpnia 2019 przez tkz Nałogowiec (42,000 p.)
Na jakim kompilatorze pracujesz? Musisz ustawić std c++11 lub wyżej. Błąd wynika z tego, że ofstream da się zbudować dzięki stringowi tylko od standardu 11.
komentarz 11 sierpnia 2019 przez Bulbi Początkujący (250 p.)
CPP

GNU GCC Compiler

Jeśli o to ci chodzi, jak mówiłem dopiero zaczynam więc mógłbyś mi powiedzieć jak to zmienić ?
komentarz 11 sierpnia 2019 przez tkz Nałogowiec (42,000 p.)
Jeżeli kompilujesz z konsoli  g++ -std=c++17 -Wpedantic -Wall -Wextra -O3  plik.cpp -o main

Jeżeli codebloxie w settings -> compiller settings zaznaczasz Have g++
komentarz 11 sierpnia 2019 przez Bulbi Początkujący (250 p.)
Wielkie dzięki za pomoc teraz wszystko działa jak powinno :) !

 

topic.close();

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 295 wizyt
0 głosów
1 odpowiedź 169 wizyt
pytanie zadane 23 maja 2015 w C i C++ przez Oliwier Wolf Użytkownik (950 p.)
0 głosów
2 odpowiedzi 1,039 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...