[C++] obróbka tekstu

0

mam taką funkcje, chodzi mi o to aby wczytane nazwy nie miały rozszerzeń.
jakby ktoś mogl poprawic ten kod bylbym wdzieczny.

Plik z danymi wygląda tak
<image>cos tam.life
cosik.life
plik.life
plik3.life
</image>

chcę aby po wyświetleniu wyglądał tak:
cos tam
cosik
plik
plik3

void interfejs::wyswietl()
{
	int n=0,c=0;
	char p;




ifstream plik;
    plik.open("pom.pom");

    if(!plik)
            {
        rest(200);
            allegro_message("blad danych");
            }
    else
    {
   while(plik.good())
    {
		
        
      p=plik.get();
			n+=10;
        if(p==0x0a)
        {
			
			c+=10;
			n=0;
		
		}

		
		if(p!=0x0a)
	
	
	textprintf_ex(screen,font,535+n,350+c,makecol(0,0,0),-1,"%c",p);	
}
	

plik.close();
    }
	
} 
 
0

np można to zrobić tak :
tutaj masz gotowa funkcje jak "rozwalić" string`a : http://www.infernodevelopment.com/perfect-c-string-explode-split
boost też ma coś takiego http://www.boost.org/doc/libs/1_45_0/doc/html/string_algo/usage.html#id2571159

bierzesz "." (kropke) jako przerywnik i
po rozwaleniu stringa dostajesz wektor stringów i w twoim przypadku nazwa pliku to (*wektor_z_stringami.begin())

0

Proponuję metodę find_last_of() klasy string:

#include <string>
using namespace std;

string remove_ext(const string& str)
{
  size_t pos;
  pos = str.find_last_of(".");
  return str.substr(0, pos);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1