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

String - więcej niż jedno słowo w zmiennej.

Object Storage Arubacloud
0 głosów
818 wizyt
pytanie zadane 13 kwietnia 2019 w C i C++ przez Rajzok Początkujący (390 p.)

Witam smiley. Stworzyłem zmienną typu string i w programie użytkownik musi podać wyraz, aby zapisać go w zmiennej. W dalszej części programu ma się to zapisać w pliku.txt. Mam kilka zmiennych, każda zapisuje się w nowej linijce pliku tekstowego. I wszystko działa, dopóki nie wprowadzę do zmiennej string dwóch wyrazów. Wtedy program pomija następne punkty, a ta zmienna w pliku .txt zapisuje się w dwóch linijkach:

1.  pierwszy_wyraz_zmiennej

2. drugi_wyraz_zmiennej

Podczas gdy ja chciałbym, aby zapisywała się w jednej linijce:

1. pierwszy_wyraz_zmiennej_ spacja _drugi_wyraz_zmiennej_

Czy ktoś wie jak taki problem rozwiązać? Z góry dziękuję bardzo za pomoc smiley

komentarz 13 kwietnia 2019 przez Hiskiel Pasjonat (22,830 p.)
Kod pokaż, proszę.
komentarz 13 kwietnia 2019 przez Rajzok Początkujący (390 p.)
edycja 13 kwietnia 2019 przez Rajzok

Ogólnie rzecz ujmując jest to kreator państw do gry w konsoli. Zebrane dane program ma zapisać w pliku zapis_gry.txt

#include <iostream>
#include <windows.h>
#include <fstream>

using namespace std;
string pan_nazwa, przyw_nazwa, ustroj, organizacja, ONZ, krag_cyw,
       pan_religia, popular_religia;
int    wybor;

int main()
{
    cout << "Witaj w kreatorze wlasnego panstwa" << endl;
    cout << "Wpisz nazwe panstwa (bez spacji): "; cin >> pan_nazwa; system("cls");
    cout << "Wpisz swoje imie "; cin >> przyw_nazwa; system("cls");
    cout << "Wybierz ustroj " << endl;
    cout << "1. Monarchia" << endl;
    cout << "2. Demokracja" << endl;
    cout << "3. Dyktatura" << endl;
    cout << "4. Technokracja" << endl;
    cout << "Twoj wybor: "; cin >> wybor;

    switch(wybor)
    {
    case 1:
        ustroj = "monarchia";
    break;

    case 2:
        ustroj = "demokracja";
    break;

    case 3:
        ustroj = "dyktatura";
    break;

    case 4:
        ustroj = "technokracja";
    break;

    default:
        cout << "Wprowadzona liczba nie moze zostac wybrana" << endl;
    } system("cls");


    cout << "Wybierz organizacje do ktorej chcesz nalezec" << endl;
    cout << "1. Unia Europejska" << endl;
    cout << "2. Liga Panstw Arabskich" << endl;
    cout << "3. Unia Narodow Afrykanskich" << endl;
    cout << "Twoj wybor: "; cin >> wybor;

    switch(wybor)
    {
    case 1:
        organizacja = "UE";
    break;

    case 2:
        organizacja = "LPA";
    break;

    case 3:
        organizacja = "UNA";
    break;

    default:
        cout << "Wprowadzona liczba nie moze zostac wybrana" << endl;
    } system("cls");

    fstream zapis;
    zapis.open("zapis_gry.txt",ios::out);
    zapis<<pan_nazwa<<endl;
    zapis<<przyw_nazwa<<endl;
    zapis<<ustroj<<endl;
    zapis<<organizacja<<endl;
    zapis.close();


    return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 13 kwietnia 2019 przez j23 Mędrzec (194,920 p.)
wybrane 14 kwietnia 2019 przez Rajzok
 
Najlepsza

Użyj funkcji std::getline.

komentarz 14 kwietnia 2019 przez Rajzok Początkujący (390 p.)

OK, ale w jaki sposób?

cout << "Wpisz nazwe: ";  cin >> nazwa;

W przedstawionym kodzie gdzie umiejscowić std::getline?

komentarz 14 kwietnia 2019 przez j23 Mędrzec (194,920 p.)
std::getline(std::cin, nazwa);

Umiejscawiasz to tam, gdzie chcesz wczytać całą linię tekstu.

komentarz 14 kwietnia 2019 przez Rajzok Początkujący (390 p.)
przywrócone 14 kwietnia 2019 przez Rajzok
Wszystko świetnie działa, dzięki wielkie za pomoc :-)
+1 głos
odpowiedź 13 kwietnia 2019 przez DeBos123 Nałogowiec (44,950 p.)

Spróbuj:

cin >> noskipws >> a;

gdzie a to twoja zmienna string.

komentarz 13 kwietnia 2019 przez Rajzok Początkujący (390 p.)
Niestety, po dokładnym wpisaniu noskipws problem występuje nadal: program wpisuje do pliku tekstowego nadal tylko 1 wyraz w jednej linii.
komentarz 13 kwietnia 2019 przez DeBos123 Nałogowiec (44,950 p.)

Spróbuj użyć std::getline tak jak napisał @j23.

komentarz 14 kwietnia 2019 przez Rajzok Początkujący (390 p.)
OK, ale w którym miejscu tą funkcję umiejscowić?

Podobne pytania

+1 głos
3 odpowiedzi 420 wizyt
+2 głosów
3 odpowiedzi 258 wizyt
pytanie zadane 13 grudnia 2021 w PHP przez Bakkit Dyskutant (7,600 p.)
0 głosów
1 odpowiedź 231 wizyt
pytanie zadane 17 stycznia 2017 w JavaScript przez dkarski Obywatel (1,610 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...