C/C++

érdekes Unicode viselkedés - furcsa karakterek

Fórumok

Egy feladatomban Qt4-ben kell egy alkalmazást megírnom.
A program konzolban fut majd, azonban megfelelően kell paraméterezni.
Megírtam a részeket, amik ellenőrzik a paraméreket, azonban egy furcsa jelenségre lettem figyelmes.
Az OS Ubuntu 7.10, UTF-8-as magyar locale-val.
A program nevét az

argv[0]

-ból venném ki, de ilyenkor mindig kell egy

basename

-szerű függvényt hívni, hogy az elérési utat levágjuk.
A jelenség az, hogy olyan karakterek jelennek meg a programom kimenetében, amiket a parancssorban nem adtam meg, illetve olyanok eltűnnek, amelyeket pedig igen.


janos@janos-virtual:~/Desktop/dev$ export LANG="hu_HU.UTF-8"
janos@janos-virtual:~/Desktop$ ./dev/skype-­bridge 
Usage:   "skype­bridge"  --server << server_name >> --­­port << port >>
 
janos@janos-virtual:~/Desktop$ export LANG="en_US"
janos@janos-virtual:~/Desktop$ ./dev/skype-­bridge 
Usage:   "skypebridge"  --server << server_name >> --port << port >>
 
janos@janos-virtual:~/Desktop$ 

/ A programfájl neve skype-bridge, és ahogy a fenti kimenetet bemásoltam a firefox-ba, úgy a bemásolás után is másként nézett ki a szöveg, mint eredetileg (a program futtatásakor skype-bridge helyett skypebridge lett) (kijavítottam arra, amit a konzolban látok) /
Nem tudom, hogy miért van ez így, és hogyan kényszeríthetném helyes működésre a programomat.
A forrás itt található.

szerk: továbbá az sem világos számomra, hogy a program nevének kiírásakor miért jelennek meg idézőjelek, mikor én azt a kódba nem írtam bele...

Eclipse: *** No rule to make target

Fórumok

Üdv!

Elkezdtem (volna) használni az Eclipse-t C programozásra (Ubuntu HHeron alatt), azonban a legelején sikerült elakadnom. A Build kiadására ezt a kimenetet kapom:
make -k all
make: *** No rule to make target `all'.

A clean-re pedig:
make -k clean
make: *** No rule to make target `clean'.

Próbáltam keresni a beállítások között, keresgéltem a megoldást itt is, a google-ben is, jó pár helyen említették, de értelmezhető választ sehol nem láttam. Mi a probléma??

ui.: ezzel tanulok (többek között) C-ben programozni, szóval a használd xy-t ehelyett válaszokat kérem mellőzni.

nyitott file leírója kié?

Fórumok

Kerestem de nem igazán találtam rá megoldást, hogy hogyan tudom megnézni, hogy egy adott file (elérési út alapján) már megnyitotta az programom vagy még nem.
Tehát mivel/hogyan tudom megmondani, hogy mi egy adott file leírója, vagy egy adott leíró melyik file-lé?

c# mail

Fórumok

Sziasztok!

azt kéne megvalósítanom, hogy van egy box, abban wysiwyg módon megszerkeszthető egy e-mail, betűméretet lehet módosítani, képet beilleszteni, és ebből gondolom generálni egy kódot, és azt elküldeni
bizonyára így szokták...
eddig egy webBrorser komponensel próbálkoztam.
van valami jobb ötletetek minek nézzek utána?
köszi

[Megoldva:] Sablon osztály furcsaságai

Fórumok

Sziasztok!

Ezt a példa-programot írtam:

main.cpp :


#include "tempclass.h"
#include "nontempclass.h"

int main() {
    TempClass <int> tc;
    tc.printSomething(34);

    NonTempClass ntc;
    ntc.printSomething(34);

    return 0;
}

tempclass.h :


#ifndef TEMPCLASS_H
#define TEMPCLASS_H

template <class T> class TempClass {

public:
    TempClass();
    void printSomething(T input);
};

#endif

tempclass.cpp :


#include <iostream>
#include "tempclass.h"

template <class T> TempClass<T>::TempClass() {
}

template <class T> void TempClass<T>::printSomething(T input) {
    std::cout << "\nTemplate is printing this: " << input << "\n\n";
}

nontempclass.h :


#ifndef NONTEMPCLASS_H
#define NONTEMPCLASS_H

class NonTempClass {

public:
    NonTempClass();
    void printSomething(int input);
};

#endif

nontempclass.cpp :


#include <iostream>
#include "nontempclass.h"

NonTempClass::NonTempClass() {
}

void NonTempClass::printSomething(int input) {
    std::cout << "\nNon template is printing this: " << input << "\n\n";
}

A program fordításakor a következő hibát kapom a g++ fordítótól:

main.o: In function `main':
main.cpp:(.text+0x1d): undefined reference to `TempClass::TempClass()'
main.cpp:(.text+0x30): undefined reference to `TempClass::printSomething(int)'

Miért ez a különbség a sablon osztály és nem sablon osztály között? Miért nem tudja lefordítani a sablon osztályt rendesen?

threadek

Fórumok

Sziasztok!

Nos, 2.6-os kernel, POSIX thread-ek.

Az a gyors kérdésem a t.fórumhoz, hogy több magos CPU-k esetén, ha létrehozok egy új threadet, akkor milyen stratégia szerint osztja el a kernel, hogy melyik CPU-n fusson az új thread.

Van-e ebbe beleszólása valahol a programozónak?

Kösz a választ.

C++ "NULL streambuffer" létrehozása

Fórumok

Sziasztok!

A következő C++-os problémát szeretném megoldani.
Adott egy C++ program, amit Windows-on és OnTime realtime operációs rendszeren futtatok.
A problémám a következő. Szeretném a szöveges logokat cout stílusban a c++ standard lib ostream osztályával előállítani. Alapvetően 4 féle működése lenne a logolásnak. osstream, ofstream, cout és tervezek egy null_stream-et. Ez utóbbi egy sima ostream példány lenne és a beleírt karaktereket egyszerűen "eldobná" nem történne tényleges logolas (hogy szükség esetén csökkentsem a rendszer terhelését). Ezt a null stream-et egy olyan ostream-el valósítanám meg amit egy "null streambuffer"-el inicializalnek az ostream konstruktoraban. A kérdésem az volna, hogy hogyan valósíthatnám meg ezt a null streambuffert. Az eredeti streambuf osztály mely tagfuggvényeit override-oljam és azok hogyan működjenek? Ha valaki foglalkozott már hasonló dologgal, örömmel venném a tanácsait.

Előre is köszi a segítséget!

c++ fejlesztői környezet Ubuntu alá -- ki mit?

Fórumok

sziasztok!

a kérdésem annyi lenne, hogy milyen c++ fejlesztői környezetet tudnátok ajánlani Ubuntu rendszer alá? gedit és társainak szintaxiskiemelése borzasztóan lassú és erőforrásigényes (nem erős a vas, még néha a zenelejátszás is akad tőle), valamint nem ártana, ha lenne benne debugger és fordító. vim-mel birkózom, de hamarabb kéne droidkódolnom, minthogy azt meg tudjam szokni, szóval SOS megoldás kéne.

köszönettel:
bri

[Megoldva:] ASCII karakterek konvertálása UTF-8 -ra

Fórumok

Sziasztok!

Régi, DOS-ban szerkesztett szöveges fájljaimat szeretném a Linux-os (UBUNTU 8.04) környezetemhez konvertálni.
Írtam hozzá egy kezdetleges progit, de még nem működik. Próbaképpen csak az 'é' betűt konvertálom, de amiatt, hogy az UTF-8 több bájton ábrázolja a magyar ékezetes karaktereket, nem tudom egy sima "char" típusú változóba rakni a karaktert.

Ez a forráskód:


#include <fstream>

using namespace std;

int main() {
    ifstream inFile ("magyar.inc", ios::in | ios::binary);
    ofstream outFile;
    outFile.open ("magyar.txt", ios::out | ios::binary);

    char* ch = new char;

    while(!inFile.eof()  &&  inFile.read(ch, 1)) {
        if (*ch == (char)130) {
            *ch = 'é';
            outFile.write(ch, 1);
        } else {
            outFile.write(ch, 1);
        }
    }

    inFile.close();
    outFile.close();
    delete ch;
}
 

Fordításkor ezeket a figyelmeztetéseket adja a g++ fordító:

warning: multi-character character constant
src/main.cpp: In function ‘int main()’:
src/main.cpp:14: warning: overflow in implicit constant conversion

Hogyan tudnám az "é" betűt a kimeneti fájlban megjeleníteni?

Tömb méretének meghatározása

Fórumok

Sziasztok!

Kérdés: Meg lehet-e határozni egy string tömb méretét, ha egy függvényben átadjuk, mint paraméter?


int fv(std::string t[]) {
  int count;
  // hány elemből áll a tömb??????
  return count;
}

int main() {
  std::string tomb[] = {"egy", "ketto", "harom", "negy", "ot"};
  int meret = fv(tomb);
  // stb...
  return 0;
}

Én egyelőre nem jöttem rá, hogyan lehetséges. A sizeof(t) minden esetben csak 4-et ad vissza. Valószínűleg, mert egy pionter tulajdonképpen. Szerintetek, meg lehet határozni a tömb méretét?