Witam
Chcałbym do stringa wpisać tekst przypuścmy, że taki
1 2 3
3 2 1
Po użrzyciu getline i wciśnięciu enter wczytuje linijke i kończy.
Natomiast while(getline(cin, t)); niby działa, ale nie można wyjść z pętli.
Jak to rozwiązać?? Prosze o pomoc
Natomiast while(getline(cin, t)); niby działa, ale nie można wyjść z pętli.
U mnie działa. Tzn. robi to, czego bym oczekiwał — wczytuje kolejne linie tak długo, aż nie napotka EOF
. Jak chcesz wysyłać EOF
w konsoli, to na Linuksie się to robi przez naciśnięcie Ctrl + d, a na Windowsie chyba (sprawdź, nie pamiętam na 100%) przez naciśnięcie Ctrl + z.
Dzięki działa Ctrl + d
Natomiast while(getline(cin, t)); niby działa, ale nie można wyjść z pętli.
z pętli można wyjść jak zastosujesz warunek. np
while(getline(cin,napis)){
if(napis=="quit") return -1;
}
nie wiem czy dobrze napisałem ale coś podobnego możesz zrobić
Ctrl + d niby działa, ale dostaję tylko ostatni wyraz, a nie caly napis.
A chodzi mi o to żebym miał dostęp do całeg stringa.
wojovit napisał(a):
Ctrl + d niby działa, ale dostaję tylko ostatni wyraz, a nie caly napis.
A chodzi mi o to żebym miał dostęp do całeg stringa.
int main(void)
{
string napis;
while(getline(cin,napis)){
cout << "wpisano -> " << napis << endl;
if(napis=="quit") return -1;
}
}
spróbuj tak - jeżeli o to ci chodzi. Bo nie wiem co chcesz z tym napisem zrobić.
A chodzi mi o to żebym miał dostęp do całeg stringa.
To przestań nadpisywać, i zacznij łączyć stringi. Np. zacznij od pustego stringa poza pętlą, i w samej pętli wczytuj do tymczasowego i popisuj ten tymczasowy do tego pierwotnie pustego.
Althorion napisał(a):
A chodzi mi o to żebym miał dostęp do całeg stringa.
To przestań nadpisywać, i zacznij łączyć stringi. Np. zacznij od pustego stringa poza pętlą, i w samej pętli wczytuj do tymczasowego i popisuj ten tymczasowy do tego pierwotnie pustego.
Dzięki. Dobry pomysł to powinno się udać :)
Albo wczytuj całość ciurkiem:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string x;
if(getline(cin,x,'\0')) cout<<x;
return 0;
}
jak string to i empty
#include <iostream>
#include <string>
using namespace std;
int main()
{
string napis, tmp;
while(getline(cin,tmp)&&(!tmp.empty())){
napis+=tmp+'\n';
}
cout<<napis<<"\n";
return 0;
}
wojovit napisał(a):
Ctrl + d niby działa, ale dostaję tylko ostatni wyraz, a nie caly napis.
A chodzi mi o to żebym miał dostęp do całeg stringa.
A gdzie kod? Nie pokazałeś ani jednej linijki kodu i my jedynie możemy zgadywać co zrobiłeś źle na podstawie doświadczeń z innymi początkującymi.
Proszę zawsze podawaj cały swój kod. Dopóki nie nabierzesz doświadczenia co jest ważne co nie, jest to najlepsze rozwiązanie byś dostawał lepsze i szybsze odpowiedzi. Najlepiej z przykładowym wejściem i oczekiwanym wyjściem.