Newsgroup: it.comp.lang.c++
Titolo: funzione che non funziona

Ciao a tutto l'ng.Ho un problema.Dopo aver creato una mia libreria,chiamata
lib.h,appena invoco una sua funzione,il programma viene compilato (anche se
con warnings), ma poi va in crash alla sua esecuzione.Uso vc++ 6.0.Ora
riporto i codici:
***lib.h****
//riporto solo la funzione incriminata
#include <fstream>
#include <vector>
#include <string>
#include <iostream>
using namespace std;
namespace lib {
//[...]
 string leggiriga(ifstream nome,int num) {
//questa dovrebbe essere una funzione che prende il percorso e la riga di un
//file,legge quella riga  di quel file e la ritorna
 string temp;
  vector<string> v;
  while(getline(nome,temp))
   v.push_back(temp);
//qui il while è già finito
 //a questo punto le varie linee del file si trovano
  //tutte nel vector v;
  int riga=num-1;//ovviamente perchè la numerazione
  //parte da 0,quindi la 5° riga si troverà nella 4°
  //posizione del vector,ecc...
  string ris=v[riga];
  return ris;
 }
}//del namespace
****prova.cpp****
#include <fstream>
#include <lib.h>
#include <iostream>
using namespace std;
int main () {
 ifstream in("C:\\Documents and
Settings\\Mancuso\\Documenti\\raffaele\\c++\\programmi");
 cout<<lib::leggiriga(in,3);
 cout<<"\n";
 system("pause");
 return 0;
}
***warnings che da durante la compilazione di prova.cpp*****
--------------------Configuration: prova - Win32 Debug--------------------
Compiling...
prova.cpp
c:\documents and
settings\mancuso\documenti\raffaele\c++\programmi\librerie\lib.h(134) :
warning C4786:
'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char>
 > const *,std::basic_string<char,std::char_traits<char>
,std::allocator<char>
 >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >
const
&,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const
*,int>' : identifier was truncated to '255' characters in the debug infor
mation
c:\documents and
settings\mancuso\documenti\raffaele\c++\programmi\librerie\lib.h(134) :
warning C4786:
'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char>
 > *,std::basic_string<char,std::char_traits<char>,std::
allocator<char>
 >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >
&,std::basic_string<char,std::char_traits<char>,std::allocator<char> >
*,int>' : identifier was truncated to '255' characters in the debug
information
c:\programmi\microsoft visual studio\vc98\include\vector(39) : warning
C4786:
'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>
 >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>> >>::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in thedebuginformationc:\programmi\microsoft visual studio\vc98\include\vector(60):warningC4786:'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >>::~vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in thedebuginformationLinking...prova.exe - 0 error(s), 4 warning(s)Appena faccioil debug con il vc++ dice che è andato in crash per accessviolation (anchese non so che significa).Grazie a tutti e saluti.

 wrote in message 
news:qZEXd.1030981$35.38...@news4.tin.it...

Probabilmente il problema e' qui:
//posizione del vector,ecc...
string ris=v[riga];
Se il file che stai leggendo e' vuoto (o non esiste), il vettore v 
risultera' vuoto e dunque l'accesso al vettore generera' l'access violation.
Ciao
Fabio

 Settings\\Mancuso\\Documenti\\raffaele\\c++\\programmi");
prova a scrivere l'estensione....ad esempio programmi.txt.....altrimenti (a
quanto ho capito) il vc++ la considera come una cartella e va a cercare le
varie sottodirectory......controlla tra le opzioni....o al massimo cambia
compilatore (dev-c++ con compilatore gcc....ad esempio)
--
HacK ThE SysteM

 ha scritto nel messaggio
news:peC6e.767242$b5.34...@news3.tin.it...
