Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

C++ kopiera mellan två delims i en chararray

Skapad av Borttagen, 2011-03-28 14:31 i Webbutveckling & Programmering

2 227
6 inlägg
0 poäng
Lll
Visningsbild
-1322 Hjälte 534 inlägg
0
Hej.

Jag har en chararray med "hello xxxxx mellow" där xxxxx är okänt. Jag vill därför kopiera allt imellan "hello " och " mellow" för att få reda på vad det är.

Min fråga är hur jag gör det här utan att använda strings.

Försökte med något sånt här men jag kom bort mig och är mindfucked nu.
[code]
int Scan(char *start, char *end){
char str[] ="hello yellow mellow";
char * pch;
char result[255];ZeroMemory(result,255);
char * pch2;
pch2 = strrchr(str, 'm');
puts (pch2);
int len=strlen(pch2);
pch = strstr (str,"is");
printf("%d-%d=%d
pch=%d
",strlen(str),len,strlen(str)-len,*pch);
strncpy (result,pch+strlen(start)+1,strlen(str)-len);
puts (result);
}
[/code]

Tillägg av Lll 2011-03-28 14:40

Som explode() i php eller strtok() fast med en delimiter, inte många som ska testas

Go ahead, make my day

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Christley
Visningsbild
P -1322 Bandhagen Hjälte 6 449 inlägg
0
använder hello xxxxx mellow här

sätt så den börjar i läge 5
sen för att veta vart du slutar så använder du str.length()-7

being skinny with abs is like a fat bitch with big tits - it doesn't count

Lll
Visningsbild
-1322 Hjälte 534 inlägg
Trådskapare
0
ja men jag använder inte strings och jag borde förklarat att hello och mellow bara var exmpel, det kommer vara en dynamisk längd
eg

<html> <title>abc</title> </html> där jag vill fånga <title>abc</title>

Go ahead, make my day

D2H
Visningsbild
P Hjälte 3 460 inlägg
0

Svar till Lll [Gå till post]:
Om du använder C++, varför använder du printf istället för den motsvarande C++ funktionen, och puts osv. ?

Varför måste du använda char arrays istället för strings?

Ingen status

Peter_den_bra
Visningsbild
Hjälte 121 inlägg
0
Din kod ser mer ut som C än C++ men sak samma. Det är inte helt självklart hur du vill att det ska fungera. I ditt exempel vad hade du tänkt använda för delimiter där? Vad ska hända om det är flera delimiter texten, stanna på den första?

Provade skriva något som gör som jag fattar att du menar.
Ett stycke php-kod:

#include <cstring>
#include <algorithm>

using namespace std;

int Scan(char *start, char *end)
{
// start = "hello", end = "mellow"
char str[] ="hello yellow mellow";

// beräknar längderna först för att inte behöva göra det mer än nödvändigt
size_t strLenght = strlen(str);
size_t startLenght = strlen(start);
size_t endLenght = strlen(end);

// sök efter delimiter "hello"
char* pch = search(str, str + strLenght, start, start + startLenght);
if (pch == str + strLenght)
{
puts("ERROR: start delimiter not found");
return 1;
}
// flytta fram pch pekaren så den pekar efter hello
pch += startLenght;
size_t pchLenght = strlen(pch);
// sök efter delimiter "mellow"
char* pch2 = search(pch, pch + pchLenght, end, end + endLenght);

if (pch2 == pch + pchLenght)
{
puts("ERROR: end delimiter not found");
return 1;
}

// skapa en char array med null värden
char result[255] = {};
strncpy(result, pch, pch2 - pch);
puts(result);
return 0;
}

Blev inte den vackraste koden, men beror nog på att du envisas med att använda char arrayer. Om detta är en skoluppgift så förstår jag men då rekommenderar jag att inte fråga på internet för du kommer bara få en massa information som är förvirrande. Fråga läraren, eller läs på i kurslitteraturen. Om du gör det på egen hand så tycker jag du ska försöka lära dig lite mer C++ om det nu är det du vill använda för allt i din kod är sådant som C++ ärvt från C.

Det är inte fel att ha fel.

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till Lll [Gå till post]:
Vad är ditt problem mer exakt?
För de flesta sådana problem skulle jagt rekommendera nån gratis regex-motor, men om det är HTML du vill läsa in så skulle jag föreslå en XML-parser.


Forum » Datorer & IT » Webbutveckling & Programmering » C++ kopiera mellan två delims i en chararray

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons