C++ problem z wyswietleniem imiona

Witam,

nie wiem czemu ale program mi nie czyta imion ;/, kiedy go uruchamiam to zawiesza sie czarne okienko, kiedy jednak skasuje * przy czar tylko pojawia sie pierwsza literka imiona a nie cale imie ? Moze mi ktos pomoc ?

#include 

main()

{


      char* a ;


      cout << "Podaj swoje imie : " ;

      cin >> a ;


      cout << "Twoje imie to : " << a << "\n" ;


      system("PAUSE") ;

      return 0;

}

A char to jaka zmienna ? Nie pamiętasz ? Przypomnę - char to zmienna znakowa. Wczytuje tylko i wyłącznie jeden znak. To tekstu służy inna - string. :slight_smile:

W czym, kompilujesz?

w Devie jak wpisalem string to nawet program nie podkreślił(pogrubił) tej komendy ;/ i wyskakuja mi bledy mozesz napisac jak to bedziesz wygladac z komenda string?

Chcesz do wskaźnika(bez rezerwacji pamięci) wczytać tekst? Musisz jeszcze zaalokować pamięć.

Powinno być:

char *a = new char[100]{'\0'};

jak już.

ok pomoglo :slight_smile: ale bez tego {’\0’};

Działa w Dev-C++ :evil:

#include 

#include 

using namespace std;

main()

{


      string a ;


      cout << "Podaj swoje imie : " ;

      cin >> a ;


      cout << "Twoje imie to : " << a << "\n" ;


      system("PAUSE") ;

      return 0;


}

ja bym napisał to tak:

#include 

#include 


using namespace std;



int main()

{

string imie;


cout <<"Podaj swoje imie: ";

cin >>imie;

cin.ignore();


cout <<"Twoje imie to: "<

cout <<"\nNadus ENETR aby zakonczyc\n";

getchar();

return 0;

}

ucze sie od kilku tygodni wiec… moze coś źle zrobiłem(: ale wydaje mi sie, ze jest OK:)

Nie uzywajcie

cout << “\n”;

tylko

cout << endl;

Dlaczego?

endl się szybciej pisze i czytelniej wygląda, ale to nie to samo. Jest różnica, w strumieniach buforowanych endl dodatkowo flushuje strumień, co nie zawsze jest pożądane.

No i endl w windowsie, linuksie i macu to mogą być trzy różne znaki (’\n\r’,’\n’, ‘\r’), takie zaszłości historyczne.