• 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.

0 głosów
1,637 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 (195,220 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 (195,220 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 2,006 wizyt
+2 głosów
3 odpowiedzi 745 wizyt
pytanie zadane 13 grudnia 2021 w PHP przez Bakkit Dyskutant (7,600 p.)
0 głosów
1 odpowiedź 448 wizyt
pytanie zadane 17 stycznia 2017 w JavaScript przez dkarski Obywatel (1,610 p.)

93,800 zapytań

142,768 odpowiedzi

323,461 komentarzy

63,421 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...