C++ endl nem funkcionál

C++ endl nem funkcionál
2018-01-24T19:42:21+01:00
2022-10-24T18:17:45+02:00
2022-10-24T18:35:37+02:00
C++kezdő
Az lenne a kérdésem,hogyha van két sztringem bele szeretném irni őket egy fájlba ,de úgy hogy az első után új sorba kezdődjön.
így próbáltam:

#include <iostream> #include <fstream> using namespace std; int main() { string cd; getline (cin,cd); ofstream myfile; myfile.open ("akarmi.txt"); myfile<<cd; myfile<<endl; string b; getline (cin,b); myfile<<b; myfile.close(); return 0; }
Mutasd a teljes hozzászólást!
Az endl egy fuggveny igy azt nem tudod hozzaadni a stringhez, igy probald: s1 += '\n';
Illetve nem ajanlott az endl hasznalata, nyugodtan irhatsz helyette mindenhova '\n'-t.

cout << "adja meg a Beteg nevet"; cout << endl; // helyette: cout << "adja meg a Beteg nevet\n";
Mutasd a teljes hozzászólást!

  • Csatold a fájlt amiben nem látod a új sort.
    Mutasd a teljes hozzászólást!
  • Ez így is történik. Csak a végéről maradt le egy további endl
    Mutasd a teljes hozzászólást!
  • bocsi rosszul irtam le.lehet hogy beleirja ,de amikor kiolvasom és kiiratom a képernyőre ömlesztve irja ki
    Mutasd a teljes hozzászólást!
  • MADE leírta az előző témádban, hogy mi lehet a gond, azt kipróbáltad?
    A beolvasó/kiírató kódot is megosztanád velünk, kérlek? Esetleg akkor tudunk segíteni is, nem csak vakon találgatni.
    Mutasd a teljes hozzászólást!
  • itt az egész úgy ahogy van . lehetőleg ne szurjatok le a csunya kod miatt csak most kezdtem.egy haziorvosok által használt program akar lenni


    #include <iostream>
    #include <fstream>
    #include <string>
    #include <ctime>
    using namespace std;
    int main()
    {
     int a;
    cout<<"akar felvenni?";
    cin>>a;
    cin.sync();
    if (a==1)
    {
     cout<<"adja meg a TAJ számát";
    string neve;
    getline (cin,neve);
    system ("cls");
    string z2=".txt";
    string ami=neve + z2;
    ofstream siker ((ami).c_str());
    cout<<"adja meg a Beteg nevet";
    cout<<endl;
    string betegnevem;
    getline (cin,betegnevem);
    siker<<"beteg neve:"<<betegnevem;
    siker<<endl;
    cout<<"adja meg a beteg születési évét!";
    string slet;
    cout<<endl;
    getline (cin,slet);
    siker<<"született:"<<slet;
    siker<<endl;



    }
    if (a==0)
    {
     cout<<"adja meg a TAJ számát";
    string beteg;
    getline (cin,beteg);
    string z55=".txt";
    string vami=beteg+z55;
    string sor;
    ifstream siker ((vami).c_str());
     if (siker.is_open())
     {
      while (siker.good())
      {
       getline (siker,sor);
       cout<<sor;
       cout<<endl;
      }
      siker.close();
     }
     else
     cout<<"a fájl nem létezik"; 
        string s1;
     string ko;
     ifstream myfile ((vami).c_str());
     if (myfile.is_open())
     {
      while (myfile.good())
      {
       getline (myfile,ko);
       s1=s1+ko;
       
      }
      myfile.close();
     }



    string s2;
    cout<<"Panasza:" ;
    getline (cin,s2);
    cout<<endl;
    string h2;
    cout<<"Vizsgálat:";
    getline (cin,h2);
    cout<<endl;
    string d2;
    cout<<"Diagnózis:";
    getline (cin,d2);
    cout<<endl;
    string t21;
    cout<<"Terápia:";
    getline (cin,t21);
    string s3=s1;
    ofstream dyfile ((vami).c_str());
    dyfile<<s1;
    dyfile<<"Panasza:"<<s2;
    dyfile<<endl;
    dyfile<<"Vizsgálat:"<<h2;
    dyfile<<endl;
    dyfile<<"Diagnózis:"<<d2;
    dyfile<<endl;
    dyfile<<"Terápia:"<<t21;
    dyfile<<endl;
        time_t now = time(0);
        tm *ltm = localtime(&now);
        int a= 1900 + ltm->tm_year;
        dyfile<<"   ";
    dyfile<<a;
    dyfile<<".";
        int b=1+ltm->tm_mon;
        dyfile<<b;
        dyfile<<".";
        int c=ltm->tm_mday;
        dyfile<<c;
        dyfile<<"      ";
        int d=ltm->tm_hour;
        dyfile<<d;
        dyfile<<":";
        int e=ltm->tm_min;
        dyfile<<e;
        dyfile<<":";
        int f=ltm->tm_sec;
        dyfile<<f;
        dyfile<<endl;
    return 0;
    }
    }
    Mutasd a teljes hozzászólást!
  • megprobáltam nem müködik sehogy sem
    Mutasd a teljes hozzászólást!
  • Ez inkább egy elsőéves egyetemista programozás beadandójának tűnik, a kód minősége alapján, mint egy bárki által használható programnak.

    Kezdetnek: használd a forráskód gombot, hogy érthető legyen a kód. Nem kell az egész mizériát idemásolni, csak nézd meg a kiírt fájlban, hogy jól jelennek-e meg a karakterek, és ha igen, a beolvasás résznél vizsgáld meg, hogy mi lehet a gond.
    Mutasd a teljes hozzászólást!
  • fogalmam sincs hogy mi lehet a gond ezért kérem hogy segítsetek . amúgy ezt a programot nem akarom egyelőre hogy bárki is használja csak azt vettem észre hogy így könnyebb tanulni.Amúgy könyvekből tanulok fél éve se szóval az elsőéves egyeteemista szinttől még elég messze állok...ahhoz még atnulni kell ...
    Mutasd a teljes hozzászólást!
  • Csatolj egy fájt, amit a programod adott kimenetként.
    Mutasd a teljes hozzászólást!
  • Bejeloltem a gyanus helyet

    #include <ctime> #include <fstream> #include <iostream> #include <string> using namespace std; int main() { int a; cout << "akar felvenni?"; cin >> a; cin.sync(); if (a == 1) { cout << "adja meg a TAJ számát"; string neve; getline(cin, neve); // system("cls"); string z2 = ".txt"; string ami = neve + z2; ofstream siker((ami).c_str()); cout << "adja meg a Beteg nevet"; cout << endl; string betegnevem; getline(cin, betegnevem); siker << "beteg neve:" << betegnevem; siker << endl; cout << "adja meg a beteg születési évét!"; string slet; cout << endl; getline(cin, slet); siker << "született:" << slet; siker << endl; } if (a == 0) { cout << "adja meg a TAJ számát"; string beteg; getline(cin, beteg); string z55 = ".txt"; string vami = beteg + z55; string sor; ifstream siker((vami).c_str()); if (siker.is_open()) { while (siker.good()) { getline(siker, sor); cout << sor; cout << endl; } siker.close(); } else cout << "a fájl nem létezik"; string s1; string ko; ifstream myfile((vami).c_str()); if (myfile.is_open()) { while (myfile.good()) { getline(myfile, ko); s1 = s1 + ko; } myfile.close(); } string s2; cout << "Panasza:"; getline(cin, s2); cout << endl; string h2; cout << "Vizsgálat:"; getline(cin, h2); cout << endl; string d2; cout << "Diagnózis:"; getline(cin, d2); cout << endl; string t21; cout << "Terápia:"; getline(cin, t21); string s3 = s1; ofstream dyfile((vami).c_str()); dyfile << s1; dyfile << "Panasza:" << s2; dyfile << endl; dyfile << "Vizsgálat:" << h2; dyfile << endl; dyfile << "Diagnózis:" << d2; dyfile << endl; dyfile << "Terápia:" << t21; dyfile << endl; time_t now = time(nullptr); tm* ltm = localtime(&now); int a = 1900 + ltm->tm_year; dyfile << " "; dyfile << a; dyfile << "."; int b = 1 + ltm->tm_mon; dyfile << b; dyfile << "."; int c = ltm->tm_mday; dyfile << c; dyfile << " "; int d = ltm->tm_hour; dyfile << d; dyfile << ":"; int e = ltm->tm_min; dyfile << e; dyfile << ":"; int f = ltm->tm_sec; dyfile << f; dyfile << endl; return 0; } }
    Mutasd a teljes hozzászólást!
  • Jo okes köszi próbáltam az s1 be meg a ko ba a ciklis közepén mindig egy endl t ralni ,de erre hibaüzit dobott:s1<<endl;
    s1+=endl;
    Mutasd a teljes hozzászólást!
  • Az endl egy fuggveny igy azt nem tudod hozzaadni a stringhez, igy probald: s1 += '\n';
    Illetve nem ajanlott az endl hasznalata, nyugodtan irhatsz helyette mindenhova '\n'-t.

    cout << "adja meg a Beteg nevet"; cout << endl; // helyette: cout << "adja meg a Beteg nevet\n";
    Mutasd a teljes hozzászólást!
  • std::endl
    Ezt olvasd el figyelmesen. Biztos, hogy erre van szükséged?

    Amúgy biztos lehetsz benne, hogy oda kerül azaz új sor karakter. Vagy te nem veszed észre, hogy ott van, vagy a szövegszerkesztőd eszi meg/jeleníti meg rosszul.
    Hogyan próbáltál megbizonyosodni róla, hogy mit tartalmaz a fájl?
    Mutasd a teljes hozzászólást!
  • worstProgrammer megtalálta a választ, visszaolvasáskor getline-nal olvas, ami \n-ig megy, de az újsor karaktert már nem tárolja el a stringben, aztán nem is adja hozzá manuálisan. Már a helyes megoldást is leírta, gondolom ha még 6-7 ember leírja a jó választ, előbb vagy utóbb a topiknyitó is meg fogja találni.
    Mutasd a teljes hozzászólást!
  • Illetve nem ajanlott az endl hasznalata

    Ezt miből gondolod?
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • Köszi, érdekes. Még nem gondolkoztam ezen eddig.
    De azért kíváncsi lennék egy összehasonlító tesztre. Majd ha lesz egy kevés időm erre, írok egy egyszerű tesztprogramot.
    Mutasd a teljes hozzászólást!
  • Írtam egy tényleg nagyon egyszerű összehasonlítást: Quick C++ Benchmarks
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd