stringstream - jak wpisać do tablicy?
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

stringstream - jak wpisać do tablicy?

AutorWiadomość
Temat założony przez niniejszego użytkownika
stringstream - jak wpisać do tablicy?
» 2017-03-03 19:24:23
Witam.
C/C++
#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.
P-158484
» 2017-03-03 19:36:28
C/C++
strumyk.read( komunikat, 80 );
P-158485
» 2017-03-03 22:10:20
C/C++
#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.
P-158491
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
C/C++
strumyk << "Musisz cos zrobic !!!\n" << ends;
P-158493
» 2017-03-03 22:53:49
Jak uważasz. Możesz to zrobić z ends jeśli chcesz.
P-158494
» 2017-03-04 00:13:44
ends tylko dostawia zero do strumienia, które do tablicy już trafić nie musi.
P-158496
Temat założony przez niniejszego użytkownika
» 2017-03-04 08:36:59
1.Co robi ta część kodu?
C/C++
strumyk.str().c_str()
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?
P-158502
» 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ć.
P-158503
« 1 » 2
 Strona 1 z 2Następna strona