Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Zeichen suchen und ersetzten

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.12.2004, 13:49 Uhr
RedEagle



Hi.
Ich hab ne ScreenShot funktion, und möchte gerne, das Nach dem machen des Screenshots automatisch gespeichert wird.
Damit man mehr als 1 Ss machen kann, möchte ich dem Dateinamen Datum und Uhrzeit geben.:


C++:
    char *pfad;
    char zeit[30];
    
    datum = time(NULL);
    tmzgr = localtime(&datum);
    strftime(zeit,30,"%c",tmzgr);
    
    //Hier soll die Funktion hin.

    strcpy(pfad,"c:\\windows\\profiles\\ralf\\desktop\\");
    strcat(pfad,zeit);
    strcat(pfad,".bmp");



allerdings würden dann " "(Leerzeichen) und ":" im Namen vorkommen, und das möchte ich nicht, bzw geht im fall des ":" auch nicht.

Wie kann ich nache " " und ":" suchen, und die Zeichen gegen "_" ersetzen??

ps.: Frohe Ostern
--
MFG RedEagle

Dieser Post wurde am 23.12.2004 um 13:50 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.12.2004, 13:51 Uhr
~BennyB
Gast


Mach eine Schleife, welches dir *pfad durchsucht und wenn du auf das Zeichen ":" oder " " stößt, dann mache an selber Stelle einen _
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.12.2004, 13:54 Uhr
RedEagle



woher weiß ich den, wie lang "pfad" ist??

weil:

C++:
for(long long i=0; i <= unendlich(); i++)



dauert zu lange
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.12.2004, 14:09 Uhr
~BennyB
Gast


länge eines strings

strlen

bzw. suche bis zeichen '\0' erreicht ist, das ist dein ende.

for (i=0;string[i]!='\0';i++)
{
if (string[i] == ' ' || string[i] == ':') string[i] = '_';
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.12.2004, 14:15 Uhr
enno-tyrant
Frag nicht!



Code:
#include <iostream>
#include <string>
using namespace std;

string dateiname=("screenShot 23.12.2004 14:06:56");
int counter=0;

int main(){
    cout << dateiname << endl;
    do{
    dateiname[dateiname.find(' ')] = '_';
    counter++;    //gibts auch elegantere lösungen, aber du kennst ja die anzahl der ' '
    }while (counter != '2');
    //und nun für ':'
    counter=0;
    do{
    dateiname[dateiname.find(':')] = '_';
    counter++;
    }while (counter != '2');
    cout << dateiname;
}


--
...um etwas zu verstehen muß man wissen wie es funktioniert...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.12.2004, 14:15 Uhr
RedEagle



das mit dem if hätte ich auch noch hinbekommen


--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.12.2004, 14:40 Uhr
enno-tyrant
Frag nicht!


passe es dir noch an:

Code:
#include <iostream>
#include <string>
#include <time.h>
#include <sstream>
using namespace std;

string pfad=("c:\\windows\\profiles\\ralf\\desktop\\");
string dateiname, kompletter_pfad, datum;
int counter=0;
int tag, monat, jahr, stunde, minute, sekunde; //nutze NUR weas du brauchst

int main(){
    time_t rawtime;
    struct tm * timeinfo;
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
  
    //datum initialisieren
    tag=(timeinfo->tm_mday);
    monat=(timeinfo->tm_mon+1);
    jahr=(timeinfo->tm_year+1900);
    stunde=(timeinfo->tm_hour);
    minute=(timeinfo->tm_min);
    sekunde=(timeinfo->tm_sec);
    
    //datum in string umwandel
    ostringstream TAG; TAG << tag;
    ostringstream MONAT; MONAT << monat;
    ostringstream JAHR; JAHR << jahr;
    ostringstream STUNDE; STUNDE << stunde;
    ostringstream MINUTE; MINUTE << minute;
    ostringstream SEKUNDE; SEKUNDE << sekunde;
    
  
    //datum für dateiname, dabei kannst du die zeichen zwischen den zahlen selbst bestimmen
    datum = (STUNDE.str())+("_")+(MINUTE.str())+("_")+(SEKUNDE.str())+("__")+(TAG.str())+("_")+(MONAT.str())+("_")+(JAHR.str());
    
    //dateinamen vergeben
    dateiname=(datum)+(".bmp");
    do{
    dateiname[dateiname.find(' ')] = '_';
    counter++;    //gibts auch elegantere lösungen, aber du kennst ja die anzahl der ' '
    }while (counter != '2');
    //und nun für ':'
    kompletter_pfad =(pfad)+(dateiname);
    
    cout << kompletter_pfad;
}


--
...um etwas zu verstehen muß man wissen wie es funktioniert...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.12.2004, 15:34 Uhr
RedEagle



@enno-tyrant: Ich wollte einfach nur schnell und einfach nen einzigartigen Dateiname

Deine Lösung ist viliecht nicht schlecht, aber zu lang und zu unübersichtlich
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.12.2004, 19:16 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hätte da auch noch nen flotten einzeiler

C++:
for (char*p=string;*p;++p)if(*p==' '||*p== ':')*p='_';


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 23.12.2004 um 19:17 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: