stringstream - jak wpisać do tablicy?
Ostatnio zmodyfikowano 2017-03-05 18:54
Lich555 Temat założony przez niniejszego użytkownika |
stringstream - jak wpisać do tablicy? » 2017-03-03 19:24:23 Witam. #include <iostream> #include <sstream>
using namespace std;
int main() { int nr_silnika = 4; float temperat = 156.7123; char komunikat[ 80 ]; stringstream strumyk; strumyk << "Awaria silnika " nr_silnika << ", temperatura oleju " << temperat << " stopni C\n"; strumyk << "Musisz cos zrobic !!!\n" << ends; ]
Chcę wpisać tą zawartość do tablicy komunikat. No i jak to zrobić? Nie wystarczy po prostu podać jako argumentu nazwę tablicy. Chciałem to zrobić za pomocą ostrstream, ale jest już to przestarzałe. |
|
mateczek |
» 2017-03-03 19:36:28 strumyk.read( komunikat, 80 );
|
|
mokrowski |
» 2017-03-03 22:10:20 #include <iostream> #include <sstream> #include <cstring>
using namespace std;
int main() { int nr_silnika = 4; float temperat = 156.7123; char komunikat[ 80 ]; stringstream strumyk; strumyk << "Awaria silnika " << nr_silnika << ", temperatura oleju " << temperat << " stopni C\n" << "Musisz cos zrobic !!!\n"; strlcpy( komunikat, strumyk.str().c_str(), sizeof( komunikat ) ); cout << komunikat << endl; }
strumyk.read(...) nie terminuje '\0' c-string'a. |
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2017-03-03 22:45:09 @mokrowski Masz na myśli NULL na końcu tablicy? Dlatego napisałem na końcu ends strumyk << "Musisz cos zrobic !!!\n" << ends;
|
|
mokrowski |
» 2017-03-03 22:53:49 Jak uważasz. Możesz to zrobić z ends jeśli chcesz. |
|
pekfos |
» 2017-03-04 00:13:44 ends tylko dostawia zero do strumienia, które do tablicy już trafić nie musi. |
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2017-03-04 08:36:59 1.Co robi ta część kodu? 2 argument strlcpy to źródło, ale co po co ten dopisek str? 2.Rozumiem, że najpierw wpisujemy dane do strumienia "strumyk", a potem kopiujemy jego zawartość do tablicy? |
|
mokrowski |
» 2017-03-04 09:18:25 strumyk.str() zwraca ze strumienia obiekt typu string. Obiekt string przechowuje dowolne dane. Może nawet zawierać X znaków '\0' a także dane binarne. Taki obiekt string nie kończy się znakiem zerowym. .c_str() zwraca string w stylu C czyli zakończony zerem. Jeśli z obiektu typu string chcesz dostać ciąg znaków dostępny dla C i terminowany zerem, powinieneś tak zrobić. |
|
« 1 » 2 |