Søger du en specifik kategori?

 



Oprettet ons. d. 04. februar 2009 kl. 14:51

arne_v
arne_v (1.005.403 point)
Guidens karaktér
1
2
3
4
5

Basal type konvertering i C/C++

Denne artikel beskriver hvordan man konverterer mellem forskellige typer i C/C++. Den forudsætter kun minimalt kendskab til C/C++ og henvender sig primært til dem uden den store C/C++ erfaring.
Historie:
V1.0 - 31/01/2004 - original
V1.1 - 16/01/2004 - tilføjde det manglende argument til de to sscanf
short int/int/long int -> char array
Brug sprintf.

Eksempel:

#include <stdio.h>
...
  int iv = 123;
  char sv[100];
  sprintf(sv,"%d",iv);


float/double -> char array
Brug sprintf.

Eksempel:

#include <stdio.h>
...
  double xv = 123.456;
  char sv[100];
  sprintf(sv,"%f",xv);


char array -> short int/int/long int
Brug atoi eller strtol eller sscanf.

Eksempel:

#include <stdlib.h>
...
  char sv[] = "123";
  int iv;
  char *ep;
  iv = atoi(sv);
eller
  iv = strtol(sv, &ep, 10);
eller
  sscanf(sv,"%d",&iv);


char array -> float/double
Brug atof eller strtod eller sscanf.

Eksempel:

#include <stdlib.h>
...
  char sv[] = "123.456";
  double xv;
  char *ep;
  xv = atof(sv);
eller
  xv = strtod(sv, &ep);
eller
  sscanf(sv,"%f",&xv);


short int/int/long int -> char array (som hex)
Brug sprintf.

Eksempel:

#include <stdio.h>
...
  int iv = 123;
  char sv[100];
  sprintf(sv,"%X",iv);


char array (som hex) -> short int/int/long int
Brug strtol eller sscanf.

Eksempel:

#include <stdlib.h>
...
  char sv[] = "123";
  int iv;
  iv = strtol(sv, &ep, 16);
eller
  sscanf(sv,"%X",%iv);


int -> char
Brug simpel assigment.

Eksempel:

  int iv = 123;
  char cv;
  cv = iv;


char -> int
Brug simpel assigment.

Eksempel:

  char cv = 'A';
  int iv;
  iv = cv;


char array -> STL string (kun C++)
Brug simpel assignment.

Eksempel:

#include <string>
using namespace std;
...
  char sv[] = "abc";
  string s;
  s = sv;


STL string (kun C++) -> char array
Brug c_str metoden.

Eksempel:

#include <cstring>
#include <string>
using namespace std;
...
  string s = "abc";
  char sv[100];
  strcpy(sv,s.c_str());


time_t -> struct tm
Brug localtime eller gmtime funktionen.

Eksempel:

#include <time.h>
...
  time_t t = time(NULL);
  struct tm *t2;
  t2 = localtime(&t);


struct tm -> time_t
Brug mktime funktionen.

Eksempel:

#include <time.h>
...
  struct tm *t;
  time_t t2;
  t2 = mktime(t);


struct tm -> char array
Brug strftime funktionen.

Eksempel:

#include <time.h>
...
  struct tm *t;
  char ts[100];
  strftime(ts,sizeof(ts),"%d-%m-%Y %H:%M",t);


char array -> MFC string
Brug simpel assignment.

Eksempel:

    char sv[] = "ABC";
    CString s;
    s = sv;


MFC string -> char array
Brug type cast.

Eksempel:

    CString s = "abc";
    char sv[100];
    strcpy(sv, (LPCTSTR)s);


char array -> Borland AnsiString
Brug simpel assignment.

Eksempel:

  char sv[] = "abc";
  String s;
  s = sv;


Borland AnsiString -> char array
Brug c_str metoden.

Eksempel:

  String s = "abc";
  char sv[100];
  strcpy(sv,s.c_str());


Borland AnsiString -> int
Brug ToInt metoden.

Eksempel:

  String s = "123";
  int iv;
  iv = s.ToInt();


Borland AnsiString -> double
Brug ToDouble metoden,

Eksempel:

  String s = "123.456";
  double xv;
  xv = s.ToDouble();

Skrevet ons. d. 04. februar 2004 kl. 19:31| #1

petermjensen (16.590 point)
Simpelt, beskrivende og overskueligt! Perfekt til opslag.

Skrevet fre. d. 06. februar 2004 kl. 11:36| #2

mikoalngelo (17.930 point)
Måske lidt vel spartansk, men ellers ganske udemærket...

Skrevet søn. d. 15. februar 2004 kl. 20:57| #3

dilleberg (17.671 point)
char array -> short int/int/long int
char array -> float/double
  I eksemplerne mangler 'sscanf' første argument !

Skrevet tir. d. 27. september 2005 kl. 14:04| #4


Skrevet tor. d. 16. marts 2006 kl. 13:57| #5

kreinoee (13.175 point)
Rigtig god artikkel, beskriver kort og overskueligt hvordan det skal gøres.

Skrevet søn. d. 20. maj 2007 kl. 18:33| #6

tobiasahlmo (8.330 point)
synes ikke det hjalp

Skrevet ons. d. 23. januar 2008 kl. 21:09| #7

mxs (13.648 point)
Alt for mange implicitte konverteringer, og for få explicitte?

Skriv en kommentar



Mest populære guides

Guidens karakter
!!!Karaktér: 3
12 stemmer
31/01 - 2011
Af: heinzdmx

Dropbox - gratis online lagerplads

Jeg vil i denne guide forklare lidt om hvad Dropbox er og også hvordan du får mest mulig plads på Dropbox. Dropbox er kort sagt en service hvor du har dine data lagt til backup på både nettet og din egen computer.
Guidens karakter
!!!Karaktér: 4
33 stemmer
02/02 - 2009
Af: jkrons

Dato- og tidsberegninger i Excel

En introduktion til simple beregninger med dato og tid i Excel. Opdateret med afsnit om beregning af tillæg.
Excel  |  Læs »
Guidens karakter
!!!Karaktér: 4
21 stemmer
06/11 - 2011
Af: fromsej

Sådan fjerner du virus og malware

Udviklingen går stærkt på "skidt"fronten, så vi har sammensat en ny og effektiv programpakke til fjernelse af det.
Virus  |  Læs »

Log ind

   

   

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Gør dig selv en tjeneste: Køb et ordentligt SD-kort

Der kan være meget stor hastighedsforskel på to umiddelbare ens SD-kort. Se her hvad du skal være opmærksom på, når du køber ekstra hukommelse til din mobil, tablet eller kamera.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Gratis flysimulator fra Microsoft

Den legendariske Flight Simulator fra Microsoft genopstår den 29. februar - og denne gang er spillet gratis.


Nyheder fra Computerworld

Teaser billede

Bank: Derfor er login uden NemID helt i orden

Der er ikke hold i påstanden om sikkerhedsproblemer i forbindelse med bankkunders login uden brug af NemID, lyder det fra Nykredit Bank.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger