Avatar billede Lasse Novice
28. juli 2005 - 18:08 Der er 13 kommentarer og
1 løsning

Returnering af chars

Hej

Jeg har et spg. til brug af char.

Jeg skal have returneret en string (et array af/en pointer til chars) fra en funktion.

Jeg har foelgende:

char* funcA()
{
char* ddd = new char[200];
return ddd;
}

Det er ikke saerligt brugbart eftersom caller skal release (vba delete) stringen. Kan man goere dette anderledes (uden parametre til funktionen) saaledes at caller ikke skal bekymre sig om dette? Stringen er IKKE const length.
Avatar billede Lasse Novice
28. juli 2005 - 18:09 #1
Ups... stringen ER const length.
Avatar billede arne_v Ekspert
28. juli 2005 - 18:24 #2
den bedste løsning er at sende arrayet med som argument
Avatar billede arne_v Ekspert
28. juli 2005 - 18:24 #3
den dårlige løsning er:

char ddd[200];

char* funcA()
{
  ...
  return ddd;
}
Avatar billede Lasse Novice
28. juli 2005 - 18:25 #4
svar => point
Avatar billede arne_v Ekspert
28. juli 2005 - 18:28 #5
kommer her
Avatar billede arne_v Ekspert
28. juli 2005 - 18:28 #6
Hvis du kan skifte til C++ STL string så er der bedre muligheder !
Avatar billede mollevp Nybegynder
28. juli 2005 - 18:34 #7
Så tror jeg du selv er nød til at implementere en form for garbage collector. Det findes en del tutorials/artikler om emnet hvis du googler den..
Avatar billede Lasse Novice
28. juli 2005 - 19:15 #8
STL string >> ikke muligt :-(
Avatar billede nlf Nybegynder
29. juli 2005 - 11:06 #9
En tilpasset smart pointer ville også kunne løse problemet, men det er selvfølgelig ikke den nemmeste løsning.
Avatar billede nlf Nybegynder
29. juli 2005 - 11:09 #10
Ups, hehe.. smart pointeren behøver jo ikke at være tilpasset, da den jo kun skal indeholde et enkelt array, hvilket passer til en normal smart pointer's garbage collector :-P
Så kort sagt ville en smart pointer kunne gøre arbejdet for caller ;-)
Avatar billede krismort Nybegynder
30. juli 2005 - 19:09 #11
hvorfor ikke bruge en streng istedet for en c streng ? "interfacet" til en streng er jo identisk som når man bruger en c streng.
Avatar billede arne_v Ekspert
30. juli 2005 - 19:23 #12
ifølge spørger er STL sting ikke en mulighed

eller mener du noget andet end STL string ?
Avatar billede Lasse Novice
01. august 2005 - 16:43 #13
Mit spg. vedroerer ikke et problem jeg har. Det eneste jeg er interesseret i er om hvorvidt caller altid skal ryde op. Det ser saadanne ud i ALLE tilfaelde.
Avatar billede bertelbrander Novice
01. august 2005 - 19:25 #14
Man kunne:

#include <stdio.h>
struct MyStruct
{
  char Str[32];
};
MyStruct foo(int x)
{
  MyStruct My;
  sprintf(My.Str, "The number is: %d", x);
  return My;
}
int main()
{
  MyStruct M = foo(42);
  printf("%s\n", M.Str);
}
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