|
| 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
| |
|
|