[c++] een positie bepalen in een string

Pagina: 1
Acties:
  • 100 views sinds 30-01-2008
  • Reageer

  • Japie.G
  • Registratie: Augustus 2001
  • Laatst online: 08:28

Japie.G

Colour Classic

Topicstarter
Wie weet hoe ik in visual c++ een positie in een string kan bepalen. In visual basic kan dit met:

instr(string, positie, lengte) ofzoiets.


Wie weet hoe dit in c++ moet?

alvast bedankt!!

Renault Scenic E-Tech EV - PV-Output - 48kWh LiFePo4 op 15kVa Victron systeem


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 19-09 17:21
voor c:
gebruik strstr() (in string.h).
Deze geeft een pointer naar de plaats van een string in een string. Als deze pointer NULL is, bevindt de zoekstring zich niet in de andere string. Zowel, dan is de positie (vanaf 0 geteld!) het verschil tussen de opgeleverde pointer en de andere string.
code:
1
2
3
4
5
6
7
8
9
10
11
12
#include <string.h>
...
char *ptr;
size_t pos;

ptr = strstr(string1, string2);

if (ptr)
   pos = ptr-string1;
else
   pos = 0; /* of exit(-1) ofzo */
...

Zie: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcecrt/htm/crt3_28.asp

Ow ja, probeer de volgende keer iets duidelijkere vraag te stellen (bijv. "hoe zoek ik de positie van een string in een string"). Doordat je de tweede string vergeten was te vermelden snapte ik in het begin je post niet helemaal (gelukkig dat je instr erbij had staan, via msdn kon ik het dan toch vinden).

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
voor c++:

gebruik find(string [,vanaf])
code:
1
2
3
4
5
6
7
#include <string>

[..]
string blaat;
string::size_type positie;

positie = blaat.find("zoekstring");

Returnwaarde is de positie waar de gezochte string voorkomt.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-09 12:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op donderdag 27 september 2001 12:12 schreef Infinitive het volgende:
voor c:
gebruik strstr() (in string.h).
Deze geeft een pointer naar de plaats van een string in een string. Als deze pointer NULL is, bevindt de zoekstring zich niet in de andere string. Zowel, dan is de positie (vanaf 0 geteld!) het verschil tussen de opgeleverde pointer en de andere string.
code:
1
2
3
4
5
6
7
8
9
10
11
12
#include <string.h>
...
char *ptr;
size_t pos;

ptr = strstr(string1, string2);

if (ptr)
   pos = ptr-string1;
else
   pos = 0; /* of exit(-1) ofzo */
...

Zie: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcecrt/htm/crt3_28.asp

Ow ja, probeer de volgende keer iets duidelijkere vraag te stellen (bijv. "hoe zoek ik de positie van een string in een string"). Doordat je de tweede string vergeten was te vermelden snapte ik in het begin je post niet helemaal (gelukkig dat je instr erbij had staan, via msdn kon ik het dan toch vinden).
hij zei het goed, jij begrijpt het verkeerd :)
Wat hij wil is een substring uit een string.

ShereKahn: gebruik je een char[] als string of gebruik je std::string ?

Als je std::string gebruikt kun je vast wel string::substring aanroepen (zoek en gij zult vinden)

Als je char[] of char * gebruikt moet je een stukje uit die string kopieren naar een andere string

bijvoorbeeld:
code:
1
2
3
4
char str1[] = "Hallo daar", str2[6];

strncpy (str2, str1 + 3, 5);
str2[5] = 0;

met strncpy kopieer je een aantal bytes uit 1 string naar de andere. strncpy zet niet automatisch een terminating null-character achteraan de string als het aantal bytes te kopieren minder is dan de lengte van de originele string, dus die moet je er dan even met de hand achter zetten.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 19-09 17:21
hij zei het goed, jij begrijpt het verkeerd
Wat hij wil is een substring uit een string.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/off2000/html/refctInStr.asp
From MSDN
InStr function

Returns a Variant (Long) specifying the position of the first occurrence of one string within another.
En jij komt met strcpy aan? :?

Wie heeft het hier verkeerd begrepen >:)

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-09 12:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op donderdag 27 september 2001 12:37 schreef Infinitive het volgende:

[..]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/off2000/html/refctInStr.asp
[..]

En jij komt met strcpy aan? :?

Wie heeft het hier verkeerd begrepen >:)
Sorry dat ik de vb functies niet uit me hoofd ken, maar als ik instr(string, positie, lengte) zie, dan bedoelt ie dus een substring

.edit: dat valt idd niet onder 'positie in een string bepalen', maar dan moet ie maar duidelijker zijn :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Japie.G
  • Registratie: Augustus 2001
  • Laatst online: 08:28

Japie.G

Colour Classic

Topicstarter
Ik moet een proggie maken waar een tekst uit tekst.txt ingelezen wordt. Deze tekst moet in een nieuw bestand (uitvoer.txt) komen met 2 kantlijnen dus zoiets:

| tekstteksttekstteksttekstteksttekst |
| tekstteksttekstteksttekstteksttekst |
| tekstteksttekstteksttekstteksttekst |
| tekstteksttekstteksttekstteksttekst |
| tekstteksttekstteksttekstteksttekst |
| tekstteksttekstteksttekstteksttekst |
| tekstteksttekstteksttekstteksttekst |
| tekstteksttekstteksttekstteksttekst |


als een regel in die tekst niet tussen de kantlijnen past moet de vorige spatie gezocht worden en daar moet de zin worden afgekapt en op de volgende regel geplaatst worden. een regel van de in te lezen tekst komt in een string te staan en als die zin dus langer is dan (laten we zeggen) 80 tekens dan moet ie afgeknipt worden, en daarom hebben we de functie nodig die kijkt waar de zin gebleven is, zodat ie verder kan gaan met schrijven. snappie het nog?? ikke al bijna niet meer. ik dach, laat ik het is ff duidelijk maken, maar het lukt nog niet echt :)

nou, ja, bedankt al tot zover in ieder geval

groeten

Renault Scenic E-Tech EV - PV-Output - 48kWh LiFePo4 op 15kVa Victron systeem


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-09 12:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

muhahaha zie je, eerst positie van een character bepalen in een string, en daarna een substring daaruit :P

positie bepalen doe je met strchr (const char * str, int c)

Maar vertel nou even, gebruik je std::string of gebruik je char arrays :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Japie.G
  • Registratie: Augustus 2001
  • Laatst online: 08:28

Japie.G

Colour Classic

Topicstarter
Maar vertel nou even, gebruik je std::string of gebruik je char arrays :?
maak me nie uit, we komen hier nou echt niet meer uit, shit proggie :'(

heel irri, als je nog c++ leek bent!

thankz tot zover mensen

Renault Scenic E-Tech EV - PV-Output - 48kWh LiFePo4 op 15kVa Victron systeem


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Toch wel jammer dat je nou al opgeeft!!

Een beetje programmeur gaat door tot het (bijna) gelukt is...

Beetje jammer, maarja...

  • Japie.G
  • Registratie: Augustus 2001
  • Laatst online: 08:28

Japie.G

Colour Classic

Topicstarter
HEEEEJJJJ, ik geef niet op!!!!!

We gaan stug door, alleen ik bedoelde dat ik beter opnieuw kan beginnen, want der klopt helemaal geen hout meer van!

vandaar :)

Renault Scenic E-Tech EV - PV-Output - 48kWh LiFePo4 op 15kVa Victron systeem


  • hutmannetje
  • Registratie: April 2001
  • Laatst online: 21-09 11:29
tis ook zo moeilijk he ;) ,je eigen huiswerk
de mijne is al klaar hahahaaaa. :)

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 19-09 17:21
muhahaha zie je, eerst positie van een character bepalen in een string, en daarna een substring daaruit :P
* Infinitive ligt dubbel van het lachen :)

(Maar eerst positie van character bepalen :P )
Maar vertel nou even, gebruik je std::string of gebruik je char arrays :?
Tja, er staat [C++], maar ja, dat zet iedereen boven z'n C topic neer...

Laat anders een een relevant deel van je source-code zien, misschien dat we je dan een pointer kunnen geven :)
tis ook zo moeilijk he ,je eigen huiswerk
de mijne is al klaar hahahaaaa.
Nou je het zegt, laat ik ook maar eens beginnen 8-)

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]

Pagina: 1