Zum Inhalt springen

Shamharoth

Mitglieder
  • Gesamte Inhalte

    59
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Shamharoth

  1. ich hab mal das wcout probiert und bei mir kommt "abc?" raus. jedoch wenn ich das "abcö" in ein char * über "cin >> " mach, wird das char richtig ausgegeben gleich nach dem einlesen (also steht "abcö" am bildschirm). das gleiche wenn ich es hardcoded ausgebe ... (speicherung wird ja in n char* gemachd). vielleichd is ja der string dadurch schon UTF-8? ..... kann ich mir jedoch nichd vorstellen. bezüglich iconv bin ich zufüllig auf das beispiel gekommen: iconv Examples - The GNU C Library <- hier wird aus ner datei mit x-beliebiges charset sofort in wchar_t umgewandelt ....
  2. hmmm missd ..... also ich hab jetz das über UTF32 versuchd ... *Input = toWCHAR(*Input, (const char*)Charset); wcscpy(tmpwchr,(wchar_t*)(*Input)); wsInput = tmpwchr; std::wcout << L"X" << wsInput << L"X"; leider bekomm ich bei Sonderzeichen noch ne fehlerhafte ausgaben .... wäre mein Input "abc" stände "XabcX" auf dem Bildschirm. steht jedoch "abcä" im Input, steht "Xabc??" am Monitor. bei "abcü" steht sogar "Xabc? 1/4 X". zur info bezüglich meines codes: toWCHAR() bekmmt input übergeben un aktuellen charset. die funktion ruft wiederum eine firmeninterne funktion auf, welche die daten verarbeitet und iconv ausführt. darum hat die firmeninterne funktion (wird iconvert genant) statt size_t a char * als rückgabewert (darum auch vorhin das mit rückgabewert ^^). rest müsste verständlich sein ... wsInput is vom typ wstring (habs damit auch probierd darum steht es mit drinnen) und tmpwchr is vom typ wchar_t. edit: ach un nebenbei danke für deine mühe scho klasse dass du hier im forum zeit verbringsd um andren zu helfen ^^ (hab vorhin beim thema suchen ein thread entdeckt, bei dem ein andrer sehr schroff wurde, obwohl du sehr sachlich geblieben bisd )
  3. aah verstehe *kleines lämpchen im kopf angeht* wenn es durch einfaches casten geht, müsst ich es gleich mal ausprobieren bezüglich des direkten convertieren über mbstowcs hab ich es mal probiert hat nicht funktioniert. (gleiches prob als würd ich es über UTF-8 zuerst versuchen.)
  4. problem dabei is doch noch, dass iconv char als rückgabewert hat. ... wie ist dann die konvertierung zum wchar_t? müsste doch trotzdem über mbstowcs gehen (könnte sein, dass ich da ne funktion irgendwie nich in verbindung bring?)
  5. weil der string unabhängig von der eingangskonvertierung bearbeitet werden soll. jedoch wenn die verschiedenen Charsetts sofort richtig bei der konv. in wide char geändert werden brauch ich wirklich keins mehr .... muss ich mal überprüfen. ... frag is dann nur noch wie es z.b. mit ländern wie tschechen mit ihren 20 zusatzzeichen is ..... bzw. mit den deutschen umlauten ..... wie gesagt .... muss probieren
  6. hallo zusammen. ich mal wieder und mein Problem bezüglich verschiedenen charsets. vorinformation: ich arbeite C++ unter linux mein problem: ich möchte einen eingehenden string von z.b. iso-8859-1 in utf-8 konvertieren (geht über iconv). den multibyte-string, den ich bekomme, soll nun in einen widechar gespeichert werden (sollte mit mbstowcs gehen). leider geht dies nicht (ich wollt einfach den satz mit einfügen X) ). wenn der string ein umlaut enthält bekomme ich bei mbstowcs() ein -1 (Fehler) zurück. Mein testlauf: Eingangsstring: abö (hab ich über strlin in char-array gespeichert) Konvertierter String (ISO-8859-2 -> UTF-8): abö (hier sieht man ja wurde in ein mb-string konvertiert) wenn ich jetzt z.b. die länge der kette ermitteln will int mbslen(char *strptr) { int i = 0; int charlen; mblen(NULL, 0); while (charlen = mblen(strptr, MB_LEN_MAX)) { if (charlen < 0) { return -1; } strptr += charlen; i++; } return i; } bekomme ich n -1 an der 3. stelle. die minifunktion wird ja sozusagen benötigt, da ich ja in mbstowcs(dest,src,len) ja zum schluss die länge des zielstrings angeben muss (sollte ja eigentlich genau lang wie mein übergabestring sein). irgend etwas mach ich falsch, aber was ??? wäre super wenn ihr mir helfen könntet (bin schon seit 3 tagen am rätseln)
  7. jein .... also was mich vor allem jetz interessiert is bezüglich Systemprogrammierung. z.B. Signale, Sockets, Pipes (Womit ich mich schon etwas beschäftigt habe.. hab eine bidirektionale pipe machen müssen um zw. php und c++ zu kommunizieren ^^) vor allem auch linux spezifische Funktionen (WideCharToMultiByte gibt es ja als aktuelles Beispiel nich unter Linux). Bezüglich Boost hab ich schon überlegt (vor allem da Boost ja auch wchar_t und wstring kompatibel ist ... was mich auch wieder etwas verzweifelt: wchar zu multibyte zu konvertieren) jedoch sollte ich erst mal mit den gegebenen libs probieren
  8. RIESSEN DANK ich muss mich mal bezüglich libs mehr informieren. ... zuvor hab ich unter windows (vor allem mit der .NET-Umgebung) gearbetet. evtl. könntest mir diesbezüglich ein Buchtipp geben... evtl. ein C++ Buch für Linux. Also noch mal RIESSEN dank :uli
  9. gaaah danke :upps Hmmm jetzt habe ich momentan in meiner makefile folgenden linkbefehl (Ja es ist selbst eine library (weshalb ich mich doppelt schlagen müsst ... :upps :upps )) Doch wenn ich das mach bekomme ich folgende Fehler:
  10. so randinfo: ich benutze debian (was ja gern mal mit aktuallität etwas hinterher hinkt ^^)
  11. ich kann ein Objekt vom Typ pcre::RE so wie auch pcre::options (werd ich noch für UTF-8 benötigen, da ja pcre auch mit multibytes auskommt sowiet ich gelesen habe) erstellen. da das system vorinstalliert ist weiss ich jetz gar nich ob nur der wrapper installiert is oder ob pcre mit automatisch installiert wurde. wo sollte norm. weisse pcre liegen? edit: ich hab mal ein locate pcre gemacht und habe unter /usr/bin/ ein pcretest und pcre-config gefunden. mit pcretest kann ich sogar testweise re machen -> also muss ja pcre schon installiert sein, oder?
  12. Hallo zusammen. Ich versuche scho seit Stunden den C++ Wrapper von PCRE (Pascal C.... Regular Expression) zum laufen zu bringen (Linux!). Das Problem is mmer an den Methoden FullMatch(..) / PartialMatch(...). Laut der man site sollte es ja recht einfach sein. pcrecpp::RE("ell").PartialMatch("hello"); Is ja verständlich wass dies macht. Jedoch wenn ich es compiliere kommt folgende Fehlermeldung: Ich versteh dat nisch .... will mich pcrecpp ********en? Oder muss ich hierbei noch etwas holen/konfigurieren? Wäre nett wenn jemand da weiter weis .... Danke im vorraus
  13. Genau genommen will ich linux fuers arbeiten UND spielen benutzen ...Leider habe ich mir eine absolut ********ene graka gekauft. .. ati hd3850 agp: :/ ... da bekomme ich immer n black screen wenn ich die 3d ultreiber installieren will. Naja muss mir wohl bald ne neue koofen. Und warum soll ich keine rekursive zombieflut auf mi ch selbst hetzen? Das is bestimmt interessant zuzus hauen ;D Danke fuer die infos nochmal
  14. tja ich lebe gegen die mode ;D .. hab einfach keine lust mir eine extra hdd für a linux partition zu kaufen un da dann noch ein wechelramen einzubauen. .... da werd ich mal das ausprobieren wenn ich ubuntu wieder installieren will ^^ ... läuft es mit dem grub, dann läuft es auch mit der nachbarin ;D
  15. ou sry stimmt, ich hab es vergessen zu erwähnen. naja ich hoffe mal, dass durch den verbesserten code den ich im vorherigen post reingestellt weiterhelfen kann, wenn jemand mal nach select sucht (Fehler lag trotzdem an dem fehlenden Angeben von Millisekunden. hatte es auch mal mit outfp+1 und hatte den Fehlercode ausgespuckt )
  16. AAAAAAaaah ich glaub das war das problem jetzt schaud es folgender masen aus: fd_set rset; timeval timeout; timeout.tv_sec=20; timeout.tv_usec=0; FD_ZERO (&rset); FD_SET (outfp, &rset); status = select (outfp+1, &rset, NULL , NULL, &timeout); *buf = '\0';.... (outfp+1 muss gestellt werden, da es heisd es muss der höchste FD +1 sein. ... hab ich so gelesen ^^)
  17. Hallo zusammen. Ich hab wieder mal ein Problem. Ich möchte über ein Pipe eine Verbindung zu einem PHP-script herstellen (funktioniert auch), dann übergebe ich ihm daten (funzt auch wieder) und bekomme dann wieder verarbeitete daten zurück (woohoo funzt schon wieder). Jetzt möchte ich gerne, bevor mein Programm von PHP das ergebnis zurückbekommt ein select() machen (oder was auch immer dafür geeignet ist) mit einem timeout. es kann ja passieren, dass der php sich aufhängt und ich möchte dementsprechend reagieren. mein ansatz schaud so aus, dass ich folgenden code drinn hab: fd_set rset; .... timeval timeout; timeout.tv_sec=20; FD_ZERO (&rset); FD_SET (outfp, &rset); status = select (outfp, &rset, NULL , NULL, &timeout); /*STATUS AUSWERTEN*/ ... buflength = read(outfp, buf, 300); Ich bekomme beim select jedoch -1 zurück. Wie müsste es richtig ausschauen? Danke im vorraus
  18. Ich hab jetzt weitr drann rumgetestet und mir ist aufgefallen, dass ich ein Element von dem Übergebenen Pointer / Array verändere, wird der Pointer/Array im C programm NICHT geändert. ... strange o_O ich habe jedoch auch als Überparameter char* cInput stehen. und cInput[0]='X' hat keine Auswirkung auf die übergeordneten Funktionen. hmm seltsam :/ manche posts haben einen "ändern" button, manche nicht
  19. Danke erstmal. Jetzt kompiliert er (Habe nur falsch den Flag gesetzt). Jedoch habe ich jetzt ein kleines Problem im Code. Eclipse meckert bei einer strcpy funktion. Ich habe ein String sInput und ein char Pointer auf ein char Array cInput. Jetzt wollte ich den Inhalt von String in Char Koppieren: strcpy(cInput,sInput.c_str()); Im C++ Code funktioniert dieser, beim C Programm meint jedoch wenn ich die Anweisung debugge:
  20. Das ist jetzt etwas zwitriges Problem zw. Linux und Windows. Ausgangsposition: Bis gestern hatte ich neben WinXP auch Win7RC auf der Platte. Win7 hatte den Bootrecord wodurch ein bootloader gestartet wurde. Nachdem ich Debian installiert habe, hat der GRUB sich davor gesetzt (der Bootloader von Win7 war trotzdem noch intakt seltsamer weisse). Da jedoch Debian mit (Uraltpaketen um sich schmeissd, habe ich heute Ubuntu installiert. Seit dem kommt wenn ich Grub Windows auswähle nur noch "Wird gestartet... ". Was kann ich da machen? Ich habe die Daten nicht gesichert (unter anderem mein Mailordner oder auch meine Passwörter) und wäre hald noch angewiesen mein bestehendes WinXP zu starten. Es wäre super wenn da jemand mir n Tipp geben könnte. Zum Grub noch: menu.lst hat den Eintrag: KGRUBeditor sagt zudem bei "show details"
  21. hmmm norm. weisse sollte der es einfach als linkflag hinzugefügt werden können, oder? also z.b. gcc ... -libstdc++ .. bla.o -o bla ... weil bei mir funktioniert es grad nicht (obwohl libstdc++6 installiert ist auf dem system)
  22. jopp das is verständlich. jedoch versteh ich nicht warum er da rummeckert :/ laud meiner makefile bleibt er in seinem projektordner. das sind die zwei kompilierungsanweisungen, die die makefile ausführt: meine lib habe ich ja sogar in den ordner kopiert und die makefile nutzt die .a file ja auch zum linken. ... was ich auch grade seh spuckt er als ersten Fehler aus. im inputchecker_c.o steht nur die Funktion, die für C und C++ genutzt werden soll (die funktion mit 'extern "C" ')
  23. mit extern C hab ich schon viel rumprobiert. ich habe es momentan so gemacht (jetzt genauer als 1. Post) Libprojekt ->.cpp - Datei mit libfunc() mit include auf header der funktionen (nächste zeile) ->.cpp - Datei mit funktionen c++projekt ->.cpp - Datei mit der Mainfunktion ->.h - Datei mit Deklaration der libfun() ->.a - compilierte libdatei (FUNKTIONIERT) cprojekt ->.c - Datei mit der Mainfunktion ->.h - Datei mit Deklaration der libfun() ->.a - compilierte libdatei (fuktioniert nicht) Wenn ich mit gcc kompilieren will (habe eine eigene makefile an der es nicht liegen kann) kommen unter anderem folgende Fehler: hier der header, der im c-projekt auf die funktion in der library zeigen soll: #ifdef __cplusplus extern "C" { #endif bool InputCheck(char* Input, char* Type); #ifdef __cplusplus } #endif hier die funktionsdefinition in der library: #ifdef __cplusplus extern "C" { #endif bool InputCheck(char* Input, char* Type){ return InputChecker(Input,Type); } #ifdef __cplusplus } #endif
  24. hm, muss ich dann das C-Projekt mit g++ compilieren oder geht es auch (theoretisch) mit gcc?
  25. Hallo zusammen. Ich bin schon die ganze Zeit am schauen, find jedoch nichts gscheids. Ausgangssituation (C/C++ - Programmierung unter Linux/Eclipse): Ich habe eine staatische Klasse geschrieben (nennen wir sie mal lib.a) und diese besitzt eine funktion (.. libfunc() ) Jetzt möchte ich gerne, dass diese funktion in sowohl C als auch C++ Programme genutzt werden kann. Über diese Funktion werden dem Umständen entsprechend andere Funktionen aufgerufen, die die Übergabevariablen als wstring bekommen (Wegen UTF ... ) und verarbeiten. Die Funktion libfunc(...) habe ich so geschrieben, dass der Input als char* übergeben wird und diese an die interne Funktionen als wstring übergibt (nach 2maliger Konvertierung in string un dann wstring). Zudem wird ein Boolscher Wert von den internen Funktionen bis ganz nach aussen abgefeuert. Wie kann ich nun die Lib so einstellen, dass ich diese auch mit dem C programm laufen lassen kann? Zwar hab ich vereinzelt Treffer gefunden die über "extern "C"" gingen, haben jedoch nicht funktioniert, da warsch. diese einträge zudem um cpp-dateien in einem c projekt gingen. Danke im voraus

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...