Gå til innhold

Kopiering fra tekststrenger..


Anbefalte innlegg

Jeg trenger å få ett sett med skrevne 1-ords tekstrenger (definert i en headerfil, f.eks) importert inn i ett sett med stringobjekter (slik at jeg kan bruke metodene der til å manipulere: kopiere, slette, skyte inn bokstaver, etc, i en ny, resulterende tekstreng).

 

Jeg må kunne velge hvilken tekstreng jeg vil kopiere fra vha en integervariabel. Jeg trenger ikke noen nulltermineringer av noe slag.

 

Noen som har tips hvordan gjøre det enklest? String-klassen ser fristende ut..

mvh Sigdal

Lenke til kommentar
Videoannonse
Annonse

Ja, det er riktig, men det holder at arrayen er endimensjonal.

(jeg får den ikke til å kompilere. Feilmeldinger: error C2143 syntax error : missing before..... [ , { og } .)

Endret av Sigdal
Lenke til kommentar

Jeg får fortsatt de samme feilmeldingene. Hva er feil her?

Ide'en Visual C++ 6.0 (som er helt OK for numerisk arbeid.)

 

#include <stdlib.h>

#include "stdafx.h"

#include <string>

 

using std::string;

 

void main()

{

string[] siblings = new string[]{"Mike","Amy", "Mary","Albert"};

}

 

Edit: string siblings[] = {"Mary", "Albert"}; kompilerer fint, men dette lagres da på Stacken og ikke Heap. Hvordan få det på Heapen?

Endret av Sigdal
Lenke til kommentar

Hvordan må headerfilen modifiseres for å inneholde initialiseringen av stringobjektene (evt. hvordan kan initialiseringen av stringobjektene holdes adskilt fra cpp-filen)?

 

enten så putter du det på stacken ved å deklarere det:

string some_array[] = {"dill", "dall"};

 

eller så lager du en init() funksjon som du kaller ved program start (en ganske vanlig løsning).

 

 

Stort sett så deklarerer du stuff i header fila, mens c++ fila brukes til implementasjonen. Dette er litt for å løse sirkulære dependencies (at klasse a trenger klasse b for å kompileres, mens klasse b trenger klasse a.). I større prosjekter kan det hende du må flytte ting til cpp fila, rett og slett for å få ting til å kompilere.

 

I ditt tilfelle, om du skal ha stringbitene på heapen, vil header fila typisk se slik ut:

 

string* [100] streng_array;

void init_streng_array();

 

mens cpp fila har

void init_streng_array()

{

streng_array[0] = new std::strin("dill");

....

}

 

jeg vil sterkt anbefale en stack løsning her dog.

Lenke til kommentar

Ok. Men er det mulig å gjøre både deklarasjon og initialisering av strengene i headerfilan? Det er mest initialiseringen, 'some_array[] = {"tesktstrengnr1", ... , "tekstrengnr100" };', som jeg helst vil ha i en separat fil, fordi jeg antakelig vil inn og forandre på strengene og rekompilere i ettertid. Det vil være mindre risikabelt med en sånn løsning. Objektene bør ligge på stacken.

Endret av Sigdal
Lenke til kommentar

#include <stdlib.h>

#include "stdafx.h"

#include <iostream.h>

#include <time.h>

#include "test.h"

 

void main()

{

cout << strenger[3].c_str();

}

 

Med header fila:

 

#ifndef TEST_H

#define TEST_H

#include <string>

using std::string;

 

 

string strenger[] = { "streng1", "streng2", "streng3","streng4" };

 

#endif

 

Løst.

Endret av Sigdal
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...