/ 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
Arrays i c++
Fra : Jonas Jalling


Dato : 04-06-03 14:27

Hej igen,

Jeg har desværre programmeret lidt for meget php, og min opfattelse af
arrays er blevet lidt forvendt, så vidt jeg kan se... i php kan et array se
således ud:
$array[foo] = "variabel"
[bar] = "variabel2"
....osv
Kan man ikke lave det samme i c++? Så jeg kan indlæse en configfil til et
array, hvorefter jeg kan hente værdierne frem igen, ved f.eks.:
printf("fra array: %s", mitarray[filetype]);

Håber I kan forstå mit problem. Ellers vil jeg prøve at forklare mig bedre.

--
Med venlig hilsen
Jonas Jalling
root@localhost $ rm -rf /*
You know it makes sense!



 
 
Klaus Petersen (04-06-2003)
Kommentar
Fra : Klaus Petersen


Dato : 04-06-03 14:30

> Kan man ikke lave det samme i c++?

Sikkert. Men jeg kan ikke php, så jeg aner ikke hvad den php kode gør.

> Så jeg kan indlæse en configfil til et array, hvorefter jeg kan hente
værdierne frem igen, ved f.eks.:

Det afhænger af formatet i din configfil.

Hvis det er bare er tekst, er der ingen let måde at gøre det på i C svjv.




Jonas Jalling (04-06-2003)
Kommentar
Fra : Jonas Jalling


Dato : 04-06-03 14:33

Klaus Petersen wrote:
>> Kan man ikke lave det samme i c++?
>
> Sikkert. Men jeg kan ikke php, så jeg aner ikke hvad den php kode gør.
>
>> Så jeg kan indlæse en configfil til et array, hvorefter jeg kan hente
> værdierne frem igen, ved f.eks.:
>
> Det afhænger af formatet i din configfil.
>
> Hvis det er bare er tekst, er der ingen let måde at gøre det på i C
> svjv.

Hej Klaus,

Ja, jeg har ikke forklaret det ordentligt, kan jeg se. Det jeg mener er, i
stedet for at man henter sin værdi ud af arrayet, som array[1] =
"/mnt/raid/...", ville jeg hente det ud således:
array[location] = "/mnt/raid/...".
Så der i stedet for et nummer, er et navn til den værdi man vil hente ud.

--
Med venlig hilsen
Jonas Jalling
root@localhost$ rm -rf /*
You know it makes sense!



Bertel Brander (04-06-2003)
Kommentar
Fra : Bertel Brander


Dato : 04-06-03 16:21

Jonas Jalling wrote:
> Klaus Petersen wrote:
>
>>>Kan man ikke lave det samme i c++?
>>
>>Sikkert. Men jeg kan ikke php, så jeg aner ikke hvad den php kode gør.
>>
>>
>>>Så jeg kan indlæse en configfil til et array, hvorefter jeg kan hente
>>
>>værdierne frem igen, ved f.eks.:
>>
>>Det afhænger af formatet i din configfil.
>>
>>Hvis det er bare er tekst, er der ingen let måde at gøre det på i C
>>svjv.
>
>
> Hej Klaus,
>
> Ja, jeg har ikke forklaret det ordentligt, kan jeg se. Det jeg mener er, i
> stedet for at man henter sin værdi ud af arrayet, som array[1] =
> "/mnt/raid/...", ville jeg hente det ud således:
> array[location] = "/mnt/raid/...".
> Så der i stedet for et nummer, er et navn til den værdi man vil hente ud.
>
I C ville man lave en enumeration:
typedef enum
{
location,
foo,
bar,
NUM_ARRAY_INDEX
}array_index_type;

const char * const array[NUM_ARRAY_INDEX] =
{
"variable1",
"variable2",
"bar"
};

Så kan man index'e array med location/foo/bar.
De enkelte enumeration værdier (location, foo, bar) har værdierne
0, 1, 2 etc.

Du kan også bruge følgende:

array_index_type index;
for(index = location; index < NUM_ARRAY_INDEX; index++)
printf("%s\n", array[index]);

/b


Mikael Garde Nielsen (05-06-2003)
Kommentar
Fra : Mikael Garde Nielsen


Dato : 05-06-03 12:06

> Ja, jeg har ikke forklaret det ordentligt, kan jeg se. Det jeg mener er, i
> stedet for at man henter sin værdi ud af arrayet, som array[1] =
> "/mnt/raid/...", ville jeg hente det ud således:
> array[location] = "/mnt/raid/...".
> Så der i stedet for et nummer, er et navn til den værdi man vil hente ud.

Den lette måde er at bruge en associativ container som f.eks map eller
multimap. Derved kan du bruge det således:

void f()
{
using std::cout;
using std::map;
using std::string;

map<string, string> m;

// insert elements
m["key1"] = "some_string";
m["key2"] = "another_string";

// extract element from known key.
string s = m["key2"];

// print result
cout << s;
}

- Mikael



Mogens Hansen (04-06-2003)
Kommentar
Fra : Mogens Hansen


Dato : 04-06-03 15:32


"Jonas Jalling" <Jonas@jalling.dk> wrote

[8<8<8<]
> Kan man ikke lave det samme i c++?

Ja.
Brug klassen std::map og std::string (map<string, string>).

>Så jeg kan indlæse en configfil til et
> array, hvorefter jeg kan hente værdierne frem igen, ved f.eks.:
> printf("fra array: %s", mitarray[filetype]);

Normal foretrækkes det at bruge iostream i stedet for printf i C++.

Venlig hilsen

Mogens Hansen



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste