Avatar billede kring Nybegynder
05. november 2002 - 16:06 Der er 3 kommentarer og
1 løsning

Skifte codepage.

Hej Alle!

Jeg har et program skrevet i Borland C++ Builder 5. Programmet opretter en alm. fstream og skriver nogle information ud på en fil.

Nu er mit spørgsmål: Hvordan ændrer man den codepage fstream skriver med? Jeg vil gerne kunne skifte mellem forskellige.

/Kring
Avatar billede jpk Nybegynder
05. november 2002 - 16:57 #1
Du kan evt. prøve at kigge på følgende funktioner:

SetConsoleOutputCP
setlocale
_setmbcp
Avatar billede soepro Nybegynder
08. november 2002 - 14:56 #2
Jeg er nået til den konklusion, at jeg skulle lave den selv. Jeg har lavet følgende funktion:

char * xlteString(char *s, char fromCP[4], char toCP[4])
{
  int  idx;
  int  len = strlen(s);
  FILE *cpFile;
  char  cvtTbl[256];
  char  fileName[MAXPATH];
  sprintf(fileName, "x%.3s_%.3s.xlt", fromCP, toCP);
  if ((cpFile = fopen(fileName, "rb"))          == NULL
  ||  fread(&cvtTbl, sizeof(cvtTbl), 1, cpFile) != 1)
  {
    if (cpFile != NULL)
      fclose(cpFIle);
    return NULL;
  };
  fclose(cpFile);

  for (idx = 0; idx < len; idx++)
    s[idx] = cvtTbl[s[idx]];

  return s;
} // xlteString

Så skriver du bare

streamFile << xlteString(info);

i stedet for

streamFile << info;

.xlt filerne indeholder så 256 tegn, med den korrekte nye værdi for hvert tegn i den oprindelige CP:

xasc_iso.xlt : Indeholder oversættelse fra ASCII til ISO9600 (DOS til Windows)
xasc_ebc.xlt : Indeholder oversættelse fra ASCII til EBCDIC

osv.
Avatar billede soepro Nybegynder
08. november 2002 - 15:43 #3
Du skriver selvfølgelig

streamFile << xlteString(info, "ASC", "ISO"); // DOS til WINDOWS
streamFile << xlteString(info, "ISO", "UNI"); // Windows til Unix/Linux
Avatar billede kring Nybegynder
29. december 2002 - 21:19 #4
Dette spørgsmål skulle have været lukket for læææææænge siden! jeg har ikke fået testet dit forslag 100% soepro, men det virker troværdigt så du får point!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester