Hogyan tudok szöveget megfordítani c++ban?
Itt egy példa:
a lényeg a rotate függvényben van: eltároljuk az első betűt, kitöröljük, majd visszaillesszük az eltárolt első betűt a karakterlánc végére.
#include <cstring>
#include <iostream>
#include <windows.h>
void strrotate(char * s)
{
int len = strlen(s);
char first = s[0];
strcpy(s, s + 1);
s[len-1] = first;
s[len] = '\0';
}
int main(int argc, char *argv[])
{
using std::cout;
using std::endl;
char * default_text = " fenyujsag";
char * text;
if (argc > 1) {
// Use the text given by the first parameter.
text = new char[strlen(argv[1])+1];
strcpy(text, argv[1]);
} else {
text = new char[strlen(default_text)+1];
strcpy(text, default_text);
}
do {
cout << '\r'; // Return the cursor to the beginning of the line.
cout << text;
Sleep(500);
strrotate(text);
}
while ((!GetAsyncKeyState(VK_ESCAPE)) &&
(!GetAsyncKeyState(VK_RETURN)));
cout << endl;
delete [] text;
return 0;
}
A #10-ben emlegetett együgyűbb megoldás:
#include <iostream>
#if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS__) || defined(__TOS_WIN__)
#include <windows.h>
inline void varj(unsigned long ms){Sleep( ms );}
#else // presume POSIX
#include <unistd.h>
inline void varj(unsigned long ms){usleep( ms * 1000 );}
#endif
using namespace std;
int main(){
string s = "tabaki";
cout << s << flush;
for(unsigned int j=0; j<s.length()*10; j++){
varj(200);
char tmp = s[0];
for(unsigned int i=0; i<s.length()-1; i++) s[i] = s[i+1];
s[s.length()-1] = tmp;
cout << '\r'<< s << flush;
}
cout << endl;
return 0;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!