Wypisywanie stringa przez funkcję.
Ostatnio zmodyfikowano 2017-11-29 21:11
EnderstevePL Temat założony przez niniejszego użytkownika |
Wypisywanie stringa przez funkcję. » 2017-11-29 20:53:37 Witam. Napisałem funkcję wypisującą ciąg znaków w sposób: "Wypisz znak, czekaj x czasu ,wypisz znak itd. Niestety po skompilowaniu ciąg się skraca do 5 znaków czego chciałbym koniecznie uniknąć. Tutaj kod źródłowy funkcji i załączone biblioteki: #include <stdio.h> #include <string> #include <windows.h>
void tsw( std::string text, int time ) { int ts = sizeof( text ); for( int i = 0; i < ts + 1; i++ ) { printf( "%c", text[ i ] ); Sleep( time ); } }
|
|
RazzorFlame |
» 2017-11-29 21:02:00 1) sizeof(text) nie zwraca liczby znaków, zamiast tego użyj text.length()2) Kiedy już zmienisz to, warunek pętli ts + 1 spowoduje wyjście poza tablicę, usuń te + 13) Wypisywanie znaku powinieneś zrobić za pomocą std::cout: #include <iostream>
std::cout << text[ i ];
printf jest funkcją z C, a Ty korzystasz z C++. 4) Zamiast int i powinno być std::size_t i, wtedy masz pewność, że typ będzie zgodny z typem indeksów std::string. 5) Sleep to nie-multiplatformowa funkcja, dostępna tylko na windowsie, zamiast tego użyj: #include <thread> #include <chrono>
std::this_thread::sleep_for( time );
Pamiętaj przy tym, żeby zmienić typ argumentu time z int (który w ogóle nie mówi w jakiej jednostce ma być podany) na np. std::chrono::milliseconds. Wtedy tylko wywołujesz funkcję, np.: tdw( mojString, std::chrono::milliseconds( 100 ) );
|
|
EnderstevePL Temat założony przez niniejszego użytkownika |
» 2017-11-29 21:11:32 Dzięki za pomoc. :) |
|
« 1 » |