Cholerne stringi :)

0

Mam pewien problem natury teoretycznej. Czy można z klawiatury wczytać łacuch znaków będący połączeniem dwóch wyrazów?? Tzn. jeśli mają spację. Zazwyczaj to robię tak:

string jakiśstring;
cin>>jakiśstring;

tylko jak podaję mu "jakiś wyraz" to wydrukuje na ekranie tylko słowo "jakiś". I jest dupa.

0

może tak:

cin>>str1>>str2;
0

Wszystko się da.
Tylko spacje, tabulatory, itp. są separatorami dla wejścia przez >>.
Ale pomyśl nad czymś takim:

#include <iostream>
using namespace std;
int main()
{
   string s;
   while ( cin>>s )
   {
      cout << s << " ";
   }
}
0

a scanf i printf??

0

Obczaj gets() powinno pomóc.

0

cin.getline(char [], size_t, char);
ost arg to jest znak konca np '\n'

0

...tylko jak podaję mu "jakiś wyraz" to wydrukuje na ekranie tylko słowo "jakiś". I jest dupa.

:( :( :( :(
[diabel] U mnie nie ma d**y [diabel]</quote>

0

sprobuj tak:

unsigned char znak;
char linia[80];
int i=0;

while (znak != 13) //lub 10
{
linia[i] = getc(stdin);
i++;
}
0

Dalej polecam gets :) Utwórz sobie tablice char później gets(tablica) i tylko później jakiśstring = tablica; i gotowe. A gets jest chyba w dos.h

0

Moim zdaniem najlepiej skorzystać z getline

Przykładowy kod:

#include <iostream>
#include <string>

using namespace std;

int main()
{
   const int maxZnak=256;
   char temp[maxZnak];
   string napis;

   cout <<"Podaj imie i nazwisko: ";
   cin.getline(temp, maxZnak);
   cin.ignore();
   napis=temp;
   cout <<"Imie i nazwisko: "<<napis;

   cout <<"\nNacisnij ENTER aby zakonczyc...";
   getchar();
   return 0;
}

Pozdrawiam

0

cin >> ws; // odrzuć białe znaki
string s;
getline(cin, s); // pobierz znaki do końca wiersza

1 użytkowników online, w tym zalogowanych: 0, gości: 1