Avatar billede phpnewbie Nybegynder
27. august 2002 - 22:33 Der er 9 kommentarer og
2 løsninger

Parsing af string..

jamen goddaw..

jeg skal parse en string for 2 characters, fra en string og have positionen på hvor de var..

i PHP foregår det med strchr(); og det burde det også i c++, men min vc++ brokker sig..

er der en anden smart måde at gøre det på ?
Avatar billede cornelius Nybegynder
27. august 2002 - 22:35 #1
Må jeg prøve at se et par linjer kode hvor du prøver at gøre det?
Avatar billede phpnewbie Nybegynder
27. august 2002 - 22:37 #2
jamen selvfølgelig cornelius..


    if(strchr(tmpbuff, ")")) {
        //if(strstr(tmpbuff, ":)")) {
        Folk danser som vilde når denne if() er sand og smider nogle brugbare værdier   
        }
Avatar billede phpnewbie Nybegynder
27. august 2002 - 22:37 #3
hov
.. glemte lige
if(strchr(tmpbuff, ":)")) {...

den skal jo søge efter :) og ikke bare )
Avatar billede kamikaze Nybegynder
27. august 2002 - 22:53 #4
#include <iostream.h>
#include <string.h>

int main()
{
    char tmpbuff[100];
    strcpy(tmpbuff, "abcdefghijkl:)mn");
    if (strstr(tmpbuff, ":)"))
        cout << "We have a winner!" << endl;
    if (strstr(tmpbuff, "):"))
        cout << "Du bør ikke se det her" << endl;
    return 0;
}
Avatar billede cornelius Nybegynder
27. august 2002 - 22:56 #5
Ja, det er ikke så overraskende at den brokker sig. Ser du i php er "strchr" det samme som "strstr", men i min C-dokumentation er argumenterne listet som flg.
char *strchr(const char *s, int c);
Det duer derfor ikke at smide ":)" efter en int (implicit char). Den vil nok enten komme med en warning eller oversætte char-pointeren ":)" til en int (med udforudsigeligt resultat).

Til pointerne:
1) Brug altid ' som indkapsling af karakterer og " til indkapling af strenge - du er måske lidt belastet fra php her ;)

2) Du kan opnå den ønskede effekt med strstr (ligeledes i string.h)
Avatar billede kamikaze Nybegynder
27. august 2002 - 22:58 #6
Hvis det er positionen du er interesseret i:

#include <iostream.h>
#include <string.h>

int main()
{
    char tmpbuff[100];
    strcpy(tmpbuff, "abcdefghijkl:)mn");
    char* Pos = strstr(tmpbuff, ":)");
    int Result = Pos - tmpbuff + 1;
    cout << Result << endl;
    return 0;
}
Avatar billede jpk Nybegynder
28. august 2002 - 08:38 #7
#include "stdafx.h"
#include <string>
using std::string;

int main(int argc, char* argv[])
{
    string strText = "Hej jeg hedder Benny!";
    int nPos = strText.find("hed"); // nPos er nu 8, da substringen begynder på den position

    return 0;
}
Avatar billede killer_bee Nybegynder
28. august 2002 - 10:29 #8
phpnewbie >> Prøv at kigge her. http://www.eksperten.dk/spm/244124 Jeg tror at du kan bruge svaret derfra.
Avatar billede phpnewbie Nybegynder
29. august 2002 - 23:37 #9
tak til jer to kami og cornelius..

det virker.. dog er der opstået endnu et lille bitte problem.
Avatar billede cornelius Nybegynder
30. august 2002 - 00:02 #10
Hviket problem? Eller er det et nyt spørgsmål?
Avatar billede phpnewbie Nybegynder
30. august 2002 - 10:38 #11
det er i samme omfang jeg skal bruge det, men prøver lige selv..
:)
tror godt jeg kan det nemlig
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester