|
| [c++]string til char Fra : Allan Eriksen |
Dato : 07-03-03 00:06 |
|
Hej
Jeg sidder og forsøger mig lidt med noget c++ i Linux, og har et array af
strings
#include <string> IKKE string.h
string slaves[10];
jeg skal have oprettet et bibliotek på HD'en der hedder det samme som hver
element i slaves arrayet. Derfor skal jeg bruge sprintf() til at sammensætte
"mkdir" og indholdet af slaves[] arrayet. Noget lignende dette:
char command[100];
for(int i=0;i<10,i++)
sprintf(command,"mkdir %s",slaves[i]);
Dette virker bare ikke, da sprintf() skal have en const char *, men den får
en string. Er der nogen, der har nogle ideer til hvordan jeg kan caste?? Har
prøvet en del, men intet virker!
mvh
Allan
| |
Bertel Lund Hansen (07-03-2003)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 07-03-03 00:18 |
|
Allan Eriksen skrev:
>#include <string> IKKE string.h
>string slaves[10];
>jeg skal have oprettet et bibliotek på HD'en der hedder det samme som hver
>element i slaves arrayet. Derfor skal jeg bruge sprintf() til at sammensætte
>"mkdir" og indholdet af slaves[] arrayet.
Du kan vel godt sammensætte navnene som strings og vente med
konverteringen?
>char command[100];
>for(int i=0;i<10,i++)
> sprintf(command,"mkdir %s",slaves[i]);
>Dette virker bare ikke, da sprintf() skal have en const char *, men den får
>en string. Er der nogen, der har nogle ideer til hvordan jeg kan caste?
Du skal ikke caste. Du skal bruge strings indbyggede
konvertering:
string test;
char kommando[1000];
.... sprintf (kommando,"%s",test.c_str());
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Robert Larsen (07-03-2003)
| Kommentar Fra : Robert Larsen |
Dato : 07-03-03 09:19 |
|
Bertel Lund Hansen wrote:
> Allan Eriksen skrev:
>
>
>>#include <string> IKKE string.h
>>string slaves[10];
>
>
>>jeg skal have oprettet et bibliotek på HD'en der hedder det samme som hver
>>element i slaves arrayet. Derfor skal jeg bruge sprintf() til at sammensætte
>>"mkdir" og indholdet af slaves[] arrayet.
>
>
> Du kan vel godt sammensætte navnene som strings og vente med
> konverteringen?
>
>
>>char command[100];
>>for(int i=0;i<10,i++)
>> sprintf(command,"mkdir %s",slaves[i]);
>
>
>>Dette virker bare ikke, da sprintf() skal have en const char *, men den får
>>en string. Er der nogen, der har nogle ideer til hvordan jeg kan caste?
>
>
> Du skal ikke caste. Du skal bruge strings indbyggede
> konvertering:
>
> string test;
> char kommando[1000];
>
> ... sprintf (kommando,"%s",test.c_str());
>
Og i stedet for at spawne en ny process (mkdir programmet) til at
oprette biblioteket kunne du jo bruge 'mkdir' system kaldet:
SYNOPSIS
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
Robert
| |
Mogens Hansen (07-03-2003)
| Kommentar Fra : Mogens Hansen |
Dato : 07-03-03 06:42 |
|
"Allan Eriksen" <holst@nork.auc.dk> wrote in message
news:b48k00$qpj$1@sunsite.dk...
[8<8<8<]
> char command[100];
> for(int i=0;i<10,i++)
> sprintf(command,"mkdir %s",slaves[i]);
brug klassen "std::ostringstream" i stedet for "sprintf":
#include <sstream>
// ..
ostringstream os;
os << "mkdir " << slaves[i];
så slipper du for
* muligheden for buffer overrun (alternativt explicit memory håndtering)
* run-time problemer med typer
Venlig hilsen
Mogens Hansen
| |
Allan Eriksen (08-03-2003)
| Kommentar Fra : Allan Eriksen |
Dato : 08-03-03 20:10 |
|
Tak for svarene...nu virker det! Brugte Bertels forslag, da det krævede
mindst ænringer i koden :)
mvh
allan
"Allan Eriksen" <holst@nork.auc.dk> skrev i en meddelelse
news:b48k00$qpj$1@sunsite.dk...
> Hej
>
> Jeg sidder og forsøger mig lidt med noget c++ i Linux, og har et array af
> strings
>
> #include <string> IKKE string.h
> string slaves[10];
>
> jeg skal have oprettet et bibliotek på HD'en der hedder det samme som hver
> element i slaves arrayet. Derfor skal jeg bruge sprintf() til at
sammensætte
> "mkdir" og indholdet af slaves[] arrayet. Noget lignende dette:
>
> char command[100];
> for(int i=0;i<10,i++)
> sprintf(command,"mkdir %s",slaves[i]);
>
> Dette virker bare ikke, da sprintf() skal have en const char *, men den
får
> en string. Er der nogen, der har nogle ideer til hvordan jeg kan caste??
Har
> prøvet en del, men intet virker!
>
> mvh
> Allan
>
>
>
| |
|
|