Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Merkkijonosta päänsärky

sypress [12.12.2006 15:03:14]

#

#include <iostream>
using namespace std;
int main (void)
{
	char teksti[101];
	cout << "Kirjoita teksti\x84 " << endl;
	cin.read(teksti, 101);
	_strupr(teksti);
	std::cout << endl << teksti;
	cin.ignore(1000, '\n').ignore(1000, '\n');
	return 0;
}

Kun ajan tuon komentotulkissa muokkaamaan olemassaolevaa tekstitiedostoa niin se laittaa täytemerkkiä jos lopussa on tyhjää. Mitenkäs siitä pääsee eroon??

Mod. edit: kooditagit

rndprogy [12.12.2006 15:20:06]

#

Laita nolla perään.

koo [12.12.2006 15:55:38]

#

Tuo read tekee formatoimattoman luvun eikä se lisäile nullimerkkejä tms. Ja kun tekee formatoimatonta lukua, gcount kertoo, paljonko tavaraa todella tuli.

cin.read(teksti, sizeof(teksti)-1);
teksti[cin.gcount()] = '\0';
_strupr(teksti);

sypress [12.12.2006 16:01:59]

#

Jesss!!!!! Kiitti koo!!!

sypress [13.12.2006 13:57:10]

#

Vielä lisäkysymys: voiko cin.read:iä käyttää stringissä??

koo [13.12.2006 14:10:10]

#

Ei, jos tarkoitat, että voiko read-funktiolla lukea suoraan stringiin. Tuo funktio on tarkoitettu formatoimattomaan lukemiseen, se lukee kaiken - kontrollimerkit ja vaikka mitkä - tiedostosta sellaisenaan, siksi rajapinta on aika matalla tasolla, osoite char-puskuriin ja puskurin maksimikoko.

Oletkohan puuhaamassa sellaista, mihin parhaiten sopisi jokin >>-operaattori tai erillinen getline-funktio?

sypress [13.12.2006 20:12:02]

#

Juu, oikeassa olit

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta