Gå til innhold

Kopiering fra tekststrenger..


Anbefalte innlegg

Skrevet

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

Videoannonse
Annonse
Skrevet

Hvis jeg forstår deg rett så bør du vel definere de som array of stings. Eks:

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

Skrevet (endret)

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
Skrevet (endret)

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
Skrevet

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

Skrevet

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.

Skrevet (endret)

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
Skrevet (endret)

#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
Skrevet (endret)

Ingen anelse. Ser det er noe som heter 'endl' også, men har ikke satt meg inn i hva den gjør...

Endret av Sigdal
Skrevet

Endl printer ny linje.

 

std::endl flusher også output bufferen, noe som garanterer at outputten din kommer etter du har brukt endl. om du bruker \n er du ikke garantert dette.

(kjekt når du skriver til fil)

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