finde ud af det...

Tags:    c++

Howdy...

Jeg har 2 simple spørgesmål:

1. hvordan kopiere jeg de første 3 tegn fra en variabel og lægger dem i en anden?

2. hvordan sletter jeg de første 3 tegn fra en variable?

Det skal være C++

på forhånd tak !
******************
*Fishing is a lifestyle*
*Like Computer is *
******************

[Redigeret d. 24/07-04 14:19:09 af Rune Bakkendorff]



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Med variabel mener du så tekststreng?
Så kan du nemlig bruge memcpy eller strncpy (de gør det samme, hvis man sammligner med tekst-variabler).
Memcpy kopierer et bestemt antal bytes (kan bruges som tegn i dette tilfælde) fra én adresse (i dette tilfælde en variabel) til en anden adresse (som også kan være en variabel).
Streng2 er strengen som der kopieres fra, og streng1 er strengen, der skal kopieres til. 3-tallet står selvfølgelig for det antal bytes som skal kopieres.

Memcpy(&streng1, &streng2, 3);

For at slette de første tre tegn i en tekststregn skal du simpelthen bare give den adressen på plads nummer 2 i variablen (da arrays jo er indekseret fra 0 af):

Memcpy(&streng1, &streng1[2], strlen(streng1) - 3);

I øvrigt kan du finde en liste over streng-funktioner (og mange andre funktioner) på http://cppreference.com/stdstring.html

Jeg ved ikke lige hvor god du er til C++ (eller programmering i det hele taget), men er rimeligt sikker på at du i hvert fald er ny til C++, og vil for god ordens skyld lige forklare dig hvad variabler egentlig er (så du kan forstå mit sidste eksempel).
Variabler er bare adresser til steder i hukommelsen, hvor der ligger data (fx en tekst-streng).
Variablernes adresser kan findes ved at sætte et & tegn foran en variabel, og dette udnytter funktioner som memcpy så til at kopiere data med. En variabel som indeholder en adresse til en variabel sættes der et * tegn foran.
En tekst-streng ender i øvrigt med en byte, som har en værdi på 0.
En tekst-streng, som deklareres med char streng[5], refererer bare til en adresse, hvor der kan ændres 4 bytes (tekst-strengen) og en 0-byte som forbliver uændret.

n i f e
115 105 102 105
6E 69 66 69

[Redigeret d. 24/07-04 18:22:45 af Nicolai Lyster Fersner]



[robert@codemachine robert]$ cat test.cpp
#include <string>
#include <iostream>

using std::string;
using std::cout;
using std::endl;

int main(int argc, char ** argv) {
string str = "udvikler";
string beginning = str.substr(0,3);
string end = str.substr(3);
cout << "str: " << str << endl << "beginning: " << beginning << endl << "end: " << end << endl;

return 0;
}
[robert@codemachine robert]$ ./test
str: udvikler
beginning: udv
end: ikler
[robert@codemachine robert]$



t