Avatar billede Slettet bruger
04. december 2005 - 15:27 Der er 32 kommentarer og
2 løsninger

Enkelt spørgsmål om strings

Hej eksperter!

Hvordan kan vælge en bestemt del af en streng?
F.eks. få returneret indholdet fra femte til 10. bogstav?

Hvordan kan man desuden finde ud af hvilken plads et bestemt tegn står på?
F.eks. få returneret indekset af først forekomne 'q'?

Kan overstående metoder kombineres...?
Avatar billede Slettet bruger
04. december 2005 - 15:28 #1
Det var tre hurtige spørgsmål... På forhånd tak for hjælpen!
Avatar billede datasource Nybegynder
04. december 2005 - 15:40 #2
Til det første kunne du bruge dette:

#include <stdio.h>
#include <string.h>

int main()
{
    char line[] = "abcdefghijklmn";
    int i = 5;
   
    printf("%c", line[10]);
   
    return 0;
}




og til det andet kunne du bruge:

#include <stdio.h>
#include <string.h>

int main()
{
    char line[] = "abcdefghijqlmn";
    int i = 0;
   
    while(line[i] != '\0')
    {
    if(line[i] == 'q')
    {
    printf("forst forekomne %c ligger på plads nr %d", line[10], i);
    i++;
    }
    else
    i++;
    }
    getchar();
    return 0;
}
Avatar billede datasource Nybegynder
04. december 2005 - 15:41 #3
hov:
printf("forst forekomne %c ligger på plads nr %d", line[10], i);
skal være:
printf("forst forekomne %c ligger på plads nr %d", line[i], i);
Avatar billede arne_v Ekspert
04. december 2005 - 16:46 #4
C++ STL std string eller C/C++ nul termineret char array ?
Avatar billede Slettet bruger
04. december 2005 - 16:48 #5
Hvad betyder %c og %d?
Hvad betyder \0?
Er printf det samme som cout?
Avatar billede Slettet bruger
04. december 2005 - 16:49 #6
C++ STL std string eller C/C++ nul termineret char array ?
er russisk for mig...
HVAD MENER DU?!
Avatar billede Slettet bruger
04. december 2005 - 16:52 #7
Der findes ikke en indbygget funktion?
Noget i denne stil:

#include <stdio.h>
#include <string.h>

int main
{
char line[] = "abcdefghijklmnopqrstuvwxyz";
cout << line[].substr(4, 9);
cin.get();
}
Avatar billede Slettet bruger
04. december 2005 - 16:53 #8
*int main()
Avatar billede arne_v Ekspert
04. december 2005 - 16:53 #9
bruger du

string s;

eller

char s[100];

?
Avatar billede Slettet bruger
04. december 2005 - 16:57 #10
Hvad betyder

char s[100];

?
Avatar billede Slettet bruger
04. december 2005 - 16:58 #11
At s højst kan være 100 tegn lang?
Avatar billede arne_v Ekspert
04. december 2005 - 17:00 #12
det første en en STL streng

det andet er en nul termereret char array med maksimalt 99 bogstaver
Avatar billede datasource Nybegynder
04. december 2005 - 17:20 #13
Hvad betyder %c og %d?
> det hører til funktionen printf og  %c betyder at her skal et char stå og %d betyder at her skal et tal stå. Fx:
int a = 5;
printf("%d", a);
udskriver a eller 5.

Hvad betyder \0?
En streng er en række (array) af chars (tegn). Det sidste tegn i en streng er '\0'.

Er printf det samme som cout?
Ja...lidt.
printf er C
cout er C++
Avatar billede datasource Nybegynder
04. december 2005 - 17:22 #14
du kunne have brugt cout sådan:

cout << "forst forekomne " << line[i] << " ligger paa plads nr " << i;
Avatar billede Slettet bruger
05. december 2005 - 16:12 #15
Ok...
Hvordan ser følgende så ud med cout?

#include <stdio.h>
#include <string.h>

int main()
{
    char line[] = "abcdefghijklmn";
    int i = 5;
 
    printf("%c", line[10]);
 
    return 0;
}
Avatar billede datasource Nybegynder
05. december 2005 - 20:21 #16
#include <stdio.h>
#include <iostream> // skal inkluderes ved brug at cout
#include <string.h>

int main()
{
    char line[] = "abcdefghijklmn";
    int i = 5;

    cout << line[10] << endl;    // let ikke ? :P

    return 0;
}
Avatar billede Slettet bruger
06. december 2005 - 14:55 #17
#include <stdio.h>
#include <iostream> // skal inkluderes ved brug at cout
#include <string.h>

int main()
{
    char line[] = "abcdefghijklmn";
    int i = 5;

    cout << line[10] << endl;    // let ikke ? :P

    return 0;
}

> Hvor forekommer i?!
Hvordan ved den, at den skal starte ved i?
Den sætter jo bare en variabel!
Avatar billede arne_v Ekspert
06. december 2005 - 15:33 #18
i gør ikke noget i den kode
Avatar billede Slettet bruger
06. december 2005 - 18:04 #19
Nej, vel?!
Avatar billede Slettet bruger
06. december 2005 - 18:05 #20
Den virker faktisk slet ikke... Kommer med fejlmeddelelse!
Avatar billede arne_v Ekspert
06. december 2005 - 18:27 #21
C:\>type zzz.cpp
#include <iostream>

using namespace std;

int main()
{
    char line[] = "abcdefghijklmn";
    cout << line[10] << endl;
    return 0;
}

C:\>g++ zzz.cpp -o zzz.exe

C:\>zzz
k
Avatar billede arne_v Ekspert
06. december 2005 - 18:28 #22
jeg tror at det er

using namespace std;

som gør forskellen
Avatar billede arne_v Ekspert
06. december 2005 - 18:29 #23
C:\>type zzz.cpp
#include <iostream>

using namespace std;

int main()
{
    char line[] = "abcdefghijklmn";
    cout << line[10] << endl;
    return 0;
}

C:\>g++ zzz.cpp -o zzz.exe

C:\>zzz
k
Avatar billede Slettet bruger
08. december 2005 - 14:13 #24
Hvad betyder alle de C:\>'er?
Avatar billede Slettet bruger
08. december 2005 - 14:14 #25
Hvad bliver desuden den eksagte kode hvis jeg skal have fra 2. tegn og så resten af strengen 'cmnd'?
Avatar billede arne_v Ekspert
08. december 2005 - 14:30 #26
det er copy paste fra et DOS vindue

C:\> er prompten

den eksakte kode vises med TYPE
Avatar billede datasource Nybegynder
08. december 2005 - 15:31 #27
Hvis du skal have fra 2. tegn:

#include <iostream>

using namespace std;

int main()
{

    int i = 1;
    char line[] = "abcdefghijklmn";

    while(line[i] != '\0')
    {
      cout << line[i] << endl;
      i++;
    }
    return 0;
}
Avatar billede Slettet bruger
08. december 2005 - 18:01 #28
Jeg kan ikke få scriptet til at stoppe bagefter!?
Avatar billede Slettet bruger
08. december 2005 - 18:05 #29
Hverken med

cin.get();,
system("pause");
eller
cin >> enellerandenligegyldigstring;
Avatar billede Slettet bruger
09. december 2005 - 16:15 #30
Skal jeg include noget...?
Prøver lige...
Avatar billede datasource Nybegynder
09. december 2005 - 18:32 #31
getchar();
kan du stoppe med !
Avatar billede Slettet bruger
09. december 2005 - 21:49 #32
Jeg prøver - i morgen. Jeg lukker ned nu...
Avatar billede Slettet bruger
10. december 2005 - 07:46 #33
Nåå... Det var fordi jeg havde 'return 0' med...
Her er den endelige kode:

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
    int i = 1;
    char line[] = "abcdefghijklmn";
    cout << "From char 2 of line (var): '";
    while(line[i] != '\0')
    {
        cout << line[i];
        i++;
    }
    cout << "'.";
    cin.get();
}
Avatar billede arne_v Ekspert
10. december 2005 - 21:01 #34
return 0;

bør ikke ødelægge noget

(forudsat at den er sidst)
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