Toon posts:

[C++] String naar char array

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik ben bezig met een conversie van een een string naar een char array. Het probleem rust hem dat de string opgeslagen is in een class zie het voorbeeld hieronder :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
        class Device
        {
          public:
          String Vendor;
          String Type;
          int Blocks;
        };

 Device Seqd;
 Seqd.Vendor     = "TCE";
 Seqd.Type       = "7000";
 Seqd.Blocks     = 512;
 char name[12];


Nu is de bedoeling om de string Seqd.Vendor om te zetten naar een char array dit in verband met dat deze gegevens naar een log file geschreven moeten worden.

Wie kan helpen met het schrijven van de string naar een char array. Heb zelf al diverse mogelijk heden geprobeerd.

[ Voor 3% gewijzigd door Verwijderd op 13-10-2004 14:36 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:34
Wat heb je dan al geprobeerd ?

https://fgheysels.github.io/


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16:18
Welke String is het? ( geen std::string iig )

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
whoami schreef op 13 oktober 2004 @ 14:30:
Wat heb je dan al geprobeerd ?
Device Seqd;
Seqd.Vendor = "TCE";
Seqd.Type = "7000";
Seqd.Blocks = 512;
char name[12];

name[12]=(char(Seqd.Vendor));

Met de volgende error tot gevolg:

[C++ Error] Test.cpp(30): E2031 Cannot cast from 'AnsiString' to 'char'

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Ah, AnsiString. Je werkt met C++ Builder dus kennelijk. Al eens gekeken naar de methode c_str van AnsiString?

[ Voor 5% gewijzigd door SWfreak op 13-10-2004 14:40 ]


Verwijderd

Google's eerste hit op 'c++ string':
http://www.cppreference.com/cppstring.html
met c_str() misschien?

laat enzo

[ Voor 19% gewijzigd door Verwijderd op 13-10-2004 14:42 ]


Verwijderd

Topicstarter
Thnx voor het de hint c_str die had ik nog niet gevonden. De oplossing is nu als volgt :

code:
1
2
3
4
 Device Seqd;                           // Make class
 Seqd.Vendor     = "TCE";           // Fill elements
 Seqd.Type       = "7000";
 Seqd.Blocks     = 512;


ofstream a_file ("Device.log"); // Filename open or create

a_file << (Seqd.Vendor.c_str()); // String conversion to char array, and the array is written into the file
a_file.close(); // Close file

TCE wordt nu inderdaad zonder errors in het device.log geschreven

bedankt voor het helpen

[ Voor 11% gewijzigd door Verwijderd op 13-10-2004 16:08 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 02:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nog mooier is natuurlijk:
C++:
1
2
3
4
5
6
7
8
9
10
11
std::ostream & operator << (std::ostream & o, const String & s)
{
    return o << s.c_str ();
}


// ergens anders:
ofstream a_file ("Device.log"); // Filename open or create

a_file << Seqd;
a_file.close(); // Close file

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1