string in char array

Status
Niet open voor verdere reacties.

bmtvrr

Gebruiker
Lid geworden
7 jun 2010
Berichten
183
hoi,

ik probeer al een tijdje een functie te maken die een string in een char array plaatst. De oplossing is ongetwijfeld heel simpel, maar ik kom er gewoon niet uit.


Code:
/* ik snap zelf ook wel dat hij nu in de knoop raakt met de lengte van de array, maar 
ik vraag me dan af hoe ik er wel voor kan zorgen dat de string die ik als parameter 
doorgeef aan de functie in een char array wordt geplaatst.*/

string stopEenStringInEenArray(string eenString)
{
	char charArray[] = { eenString };
	return charArray[0];
}

/* stel nu dat eenString "hallo" is, dan zou hij 'h' moeten retouneren
iemand een idee hoe dit aan te pakken?
het is overigens geen probleem de string in te korten tot een vaste lengte. */
 
#define BufferSize 64

char charArray[BufferSize]={0};

for (int i=0,j=eenString.length(); i<j && i<BufferSize; i++)
charArray=eenString;
 
Code:
#include <string>

std::string stopEenStringInEenArray(const std::string &eenString)
{
	char* charArray = eenString.c_str();
	return charArray[0];
}
 
top!

hoewel ik moet bekennen dat ik niet alles begrijp werkt het wel zoals ik wil dat het werkt.

veel dank
 
[cpp]
std::string stopEenStringInEenArray(const std::string eenString) {
return eenString.substr(0, 1);
}
[/cpp]

Is ook nog een mogelijkheid om de eerste waarde te returnen. (substr() geeft immers gewoon een string terug)
 
Code:
#include <string>

std::string stopEenStringInEenArray(const std::string &eenString)
{
	char* charArray = eenString.c_str();
	return charArray[0];
}

Van const char* naar char * levert volgens mij een waarschuwing/foutmelding op, en volgens mij kun je een char ook niet returnen als string. (heb deze computer net opnieuw geïnstalleerd, dus kan het nu nog niet testen)
 
Oeps, ik heb toch mijn antwoord niet goed nagecheckt inderdaad.

CoD_NL's oplossing is prima!

Maar als je toch per se een std::string in een char array wilt stoppen:
Code:
#include <iostream>
#include <string>
#include <cstring>

using namespace std;

int main() {
    string eenString("hallo");

    const int MAX_SIZE = 20;
    char charArray[MAX_SIZE];
    strcpy(charArray, eenString.c_str());

    cout << charArray[0] << endl;
    cin.get();
}
 
[cpp]
std::string stopEenStringInEenArray(const std::string eenString) {
return eenString.substr(0, 1);
}
[/cpp]
Dit is denk ik wel de meest nutteloze functie die ik ooit gezien heb.

@Arjan B
Goh, waar doet dat stukje code mij toch aan denken... :rolleyes:
 
Laatst bewerkt:
mijn vraag is opgelost, ik heb (voor nu) geen verdere hulp meer nodig.
 
Daarvoor moet je bij de TS zijn en niet bij mij :P
Jij bent nog altijd diegene die een functie post die als een *** op een drumstel slaat zonder dit aan te geven aan TS die overduidelijk niet eens door heeft wat hij daadwerkelijk aan het doen is.
 
mijn vraag is al opgelost, dus naar mijn mening is er geen reden om nog meer reacties te plaatsen in dit topic.

Als je de discussie voort wilt zetten kun je volgens mij beter een nieuw topic openen.
 
Wij discussiëren na over het onderwerp van jouw topic, los gezien van het feit of de oplossing gepost is of niet. Daar is dit topic nu eenmaal de juiste plaats voor.
 
je zal wel gelijk hebben, je bent ongetwijfeld beter thuis op dit forum dan ik, maar het lijkt me ook niet de bedoeling dat er een of andere mega-discussie onstaat n.a.v een vraag die al lang en breed is opgelost

correct me if i'm wrong
 
Hoezo niet? Zolang een discussie relevant blijft aan het onderwerp is een diepgaande discussie toch juist het beste wat zou kunnen gebeuren? Ongeacht of het desbetreffende probleem opgelost is of niet. De uiteindelijke bedoeling van fora is om discussies met elkaar aan te gaan en om informatie met elkaar te verwisselen.
 
tja, op dat punt kan ik eigenlijk niet veel anders dan het met je eens zijn, met de voetnoot dat we nu eigenlijk aan het discusseren zijn over iets wat natuurlijk geenszins iets te maken heeft met mijn vraag...

dus er rest mij niets anders dan te zeggen: ontopic (geld natuurlijk ook voor mij)
 
Dat klopt inderdaad en dat is ook het ironische van deze discussie. Daarentegen vindt ik wel dat je enigszins van een onderwerp mag afwijken om je tegenargument aan te duiden.
 
Jij bent nog altijd diegene die een functie post die als een *** op een drumstel slaat zonder dit aan te geven aan TS die overduidelijk niet eens door heeft wat hij daadwerkelijk aan het doen is.

Ik reageerde in eerste instantie op de code van Arjan B (sorry Arjan :D), maar dat maakt verder ook niet uit. Hij reageeerde ook slechts op de vraag van de TS. En tja, wat moet ik hier nu op zeggen? std::string heeft zelf al alles in huis en heeft die functie daarom ook helemaal niet nodig, dus dat maakt de functie inderdaad nutteloos. Verder mag ik aannemen dat de TS genoeg inzicht heeft om te zien dat die functie eigenlijk niet nodig is omdat je het ook ter plekke zelf kunt opvragen.

Een aantal mogelijkheden zonder gebruik van de extra (nutteloze :p) functie:

[cpp]
std::string s;
s.assign(eenString, 0, 1);
// of
std::string s(1, eenString[0]);
// of
std::string s(eenString.substr(0, 1));
[/cpp]

edit: lol, of doel je op het feit dat hij eigenlijk het type char wenst te gebruiken in plaats van een string? Ik heb namelijk telkens de aanname gemaakt dat hij om de een of andere reden het eerste karakter als string wenst te gebruiken. :p
 
Laatst bewerkt:
sorry als ik een beetje noobie overkom, maar ik neem aan dat jullie met TS mij als starter van het topic bedoelen?
 
Ik reageerde in eerste instantie op de code van Arjan B...
Met welk doel? Ik vind dat je beter had kunnen aangeven dat de functie die jij zelf gepost hebt nergens op slaat in plaats van een poging te doen om Arjan B te verbeteren.

Verder mag ik aannemen dat de TS genoeg inzicht heeft om te zien dat die functie eigenlijk niet nodig is...
Als dat het geval is dan zou dit topic niet eens bestaan. Gelukkig dat je toch nog wat opsteekt van mijn aanmerkingen en een poging waagt om jezelf te verbeteren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan