/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Concat af "\x" og en variabel af int.
Fra : Mikkel L. Christense~


Dato : 08-05-01 16:42

Hej Alle.

Jeg sidder og har lidt problemer med at samlet en char "\x" (hex escape
sekvens) og en varabel der består af Integers. Problemet bunder i af at
jeg vil skrive et ASCII tegn udfra et tal, dette kan køres ved at skrive
"\xTAL" hvor TAL er en hex-værdi. Men dette tager jo ingen parametre, så
tænkte jeg at concat kunne hjælpe... er der nogen der har en ide til
concat eller fx. en helt anden ide.

/Mikkel


 
 
Richard Flamsholt (08-05-2001)
Kommentar
Fra : Richard Flamsholt


Dato : 08-05-01 19:40

"Mikkel L. Christensen" <mlch00@control.auc.dk> skrev:
>jeg vil skrive et ASCII tegn udfra et tal

/* udskriv det tegn som variablen tal angiver */
printf("%c", tal);

(s)printf'en kan naturligvis indgå som del af en større sammenhæng, fx

tal = 126;
sprintf(buf, "char(%d) svarer til tegnet '%c'\n", tal, tal);

Eller som det her lille (utestede) program, der udskriver alle tegn:

#include <stdio.h>
#include <limits.h>
int main(void) {
int i;
for (i = 1; i < UCHAR_MAX; i++)
printf("tegn %d er '%c'\n", i, i);
return 0;
}

--
Richard Flamsholt
richard@flamsholt.dk - www.richard.flamsholt.dk

Mikkel L. Christense~ (09-05-2001)
Kommentar
Fra : Mikkel L. Christense~


Dato : 09-05-01 08:47

Tak Richard Flamsholt...

Men jeg bruger desværre C++ builder, der er det ikke lige at
implementere standard C++ kommandoer som prinft. Eller er det ??

Hvis der er andre der kan hjælp er de velkomne.

Hilsen Mikkel




Mogens Hansen (09-05-2001)
Kommentar
Fra : Mogens Hansen


Dato : 09-05-01 09:29

Hej Mikkel,
"Mikkel L. Christensen" <mlch00@control.auc.dk> wrote in message
news:3AF8F5D9.4030402@control.auc.dk...
> Tak Richard Flamsholt...
>
> Men jeg bruger desværre C++ builder, der er det ikke lige at
> implementere standard C++ kommandoer som prinft. Eller er det ??

jo da.
printf skulle virke udemærket.
Har du prøvet og haft problemer ?

Men jeg vil bruge streams istedet.
Enten "std::cout" (som skriver til standard output, ligesom printf) eller
"std::ostringstream" som formaterer i hukommelsen (lidt á la sprintf - så
vidt jeg husker).

Følgende virker fint med Borland C++Builder V5.0, umiddelbart vel jeg mene
at der skal virke med alle compliant C++ compilere:

#include <iostream>
#include <iomanip>
#include <limits>

int main(void)
{
using namespace std;

for(char c = 1; numeric_limits<char>::max() != c; ++c) {
cout << "tegn 0x" << hex << setw(2) << setfill('0') <<
static_cast<int>(c) << " er " << c << endl;
}

return 0;
}

Venlig hilsen

Mogens Hansen



Mikkel L. Christense~ (09-05-2001)
Kommentar
Fra : Mikkel L. Christense~


Dato : 09-05-01 10:28


Mogens Hansen wrote:


>> Men jeg bruger desværre C++ builder, der er det ikke lige at
>> implementere standard C++ kommandoer som prinft. Eller er det ??
>
>
> jo da.
> printf skulle virke udemærket.
> Har du prøvet og haft problemer ?
>
> Men jeg vil bruge streams istedet.
> Enten "std::cout" (som skriver til standard output, ligesom printf) eller
> "std::ostringstream" som formaterer i hukommelsen (lidt á la sprintf - så
> vidt jeg husker).
>
> Følgende virker fint med Borland C++Builder V5.0, umiddelbart vel jeg mene
> at der skal virke med alle compliant C++ compilere:
>
> #include <iostream>
> #include <iomanip>
> #include <limits>
>
> int main(void)
> {
> using namespace std;
>
> for(char c = 1; numeric_limits<char>::max() != c; ++c) {
> cout << "tegn 0x" << hex << setw(2) << setfill('0') <<
> static_cast<int>(c) << " er " << c << endl;
> }
>
> return 0;
> }

Jeg kan godt se fidusen i programmet.. men alle disse Standard C++
kommandoer synes altså ikke at virke i Borland c++ builder.
Skal det defineres noget sted? Hvordan definerer man f.eks hvor "cout"
skal skrives i min applikation, på fx. en Label eller til en variabel
der så kunne skrives i en Label?

Hilsen Mikkel




Mogens Hansen (09-05-2001)
Kommentar
Fra : Mogens Hansen


Dato : 09-05-01 13:58

Hej Mikkel,
"Mikkel L. Christensen" <mlch00@control.auc.dk> wrote in message
news:3AF90D9D.8050907@control.auc.dk...

> Jeg kan godt se fidusen i programmet.. men alle disse Standard C++
> kommandoer synes altså ikke at virke i Borland c++ builder.

Som jeg skrev så _har_ jeg kørt det med Borland C++Builder V5.0.

> Skal det defineres noget sted? Hvordan definerer man f.eks hvor "cout"
> skal skrives i min applikation, på fx. en Label eller til en variabel
> der så kunne skrives i en Label?

Det lyder som om at dit problem er at du laver et program med en grafisk
brugergrænseflade. Den type programmer har ikke et standard output.

Du benytter tilsyneladende VCL.
Hvis du har en form med et TLabel og et TButton objekt, kan du skrive:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(char c = 1; numeric_limits<char>::max() != c; ++c) {
ostringstream os;
os << "tegn 0x" << hex << setw(2) << setfill('0') <<
static_cast<int>(c) << " er " << c << endl;
Label1->Caption = os.str().c_str();
}
}

husk lige at inkludere

#include <sstream>
#include <iomanip>
#include <limits>


Venlig hilsen

Mogens Hansen



Mikkel L. Christense~ (09-05-2001)
Kommentar
Fra : Mikkel L. Christense~


Dato : 09-05-01 16:08



Mogens Hansen wrote:

Det virker...

> Det lyder som om at dit problem er at du laver et program med en grafisk
> brugergrænseflade. Den type programmer har ikke et standard output.

Ok. så lærte jeg osse noget idag.


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste