Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z przekazaniem std::string do _stprintf

Ostatnio zmodyfikowano 2014-05-19 16:25
Autor Wiadomość
mikson
Temat założony przez niniejszego użytkownika
Problem z przekazaniem std::string do _stprintf
» 2014-05-18 21:07:08
Witam,

Mam taki kod:
_stprintf( szBuffer, _T( "%s\n%s\n %s" ), a, b, c );

Chcę scalić trzy stringi (a, b, c) w jedną zmienną typu _TCHAR właśnie przy pomocy _stprintf.
Po kompilacji i uruchomieniu program od razu zawiesza się (przestaje odpowiadać).
Kompilator dał jedynie ostrzeżenie:
[Warning] cannot pass objects of non-POD type `struct std::string' through `...'; call will abort at runtime
Co jest źle?

Pozdrawiam.
P-110343
pekfos
» 2014-05-18 21:41:35
a.c_str().
P-110347
mikson
Temat założony przez niniejszego użytkownika
» 2014-05-19 15:53:03
Teraz ostrzeżenie podczas kompilacji nie pojawia się, ale program przestaje odpowiadać po otworzeniu. Gdy usunę linijkę z _stprintf wszystko działa poprawnie. Co jest źle tym razem?
P-110397
MrPoxipol
» 2014-05-19 15:55:32
Kod.
P-110398
mikson
Temat założony przez niniejszego użytkownika
» 2014-05-19 15:58:59
C/C++
string a, b, c;
string pom;


while( !plik.eof() )
{
    getline( plik, pom );
   
    if( pom == szukane ) //jeśli znajdzie szukaną linijkę czyta trzy następne i zapisuje do a, b i c
    {
        getline( plik, a );
        getline( plik, b );
        getline( plik, c );
       
        break;
    }
}

plik.close();

a.c_str();
b.c_str();
c.c_str();

_TCHAR szBuffer[ 1000 ];
_stprintf( szBuffer, _T( "%s \n %s \n %s" ), a, b, c );

SetWindowText( hTextBox1, szBuffer );

a ostrzeżenie wróciło:
[Warning] cannot pass objects of non-POD type `struct std::string' through `...'; call will abort at runtime
P-110399
pekfos
» 2014-05-19 16:16:17
Masz przekazać wynik c_str() do _stprintf()..
P-110400
mikson
Temat założony przez niniejszego użytkownika
» 2014-05-19 16:18:13
Że tak?
C/C++
string d = a.c_str();
string e = b.c_str();
string f = c.c_str();

_TCHAR szBuffer[ 1000 ];
_stprintf( szBuffer, _T( "%s \n %s \n %s" ), d, e, f );
P-110401
pekfos
..
» 2014-05-19 16:22:51
C/C++
_stprintf( szBuffer, _T( "%s lol %s lol %s" ), a.c_str(), b.c_str(), c.c_str() );
P-110402
« 1 » 2
  Strona 1 z 2 Następna strona