Wenn du ohnehin alle Einträge nacheinander abhandelst nimm doch einen Iterator:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
std::vector< std::string >::iterator it( directory_list.begin() );
for ( ; it != directory_list.end(); ++it )
{
std::cout << ( *it ) << std::endl;
}
|
Wenn du unbedingt per Index auf die Einträge zugreifen willst dann nimm die Methode
at und fang die Ausnahme std::out_of_range ab.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
|
try
{
std::cout << directory_list.at( 10 );
}
catch ( std::out_of_range& e )
{
std::cout << "Fehler" << std::endl;
}
|
Diese Methode wirft eine Ausnahme vom Typ std::out_of_range wenn der Index den Wertbereich vom vector überschreitet, der Operator[] tut das nicht!
Wenn du unbedingt den Operator[] verwenden willst dann prüfe vorher ob der Index gültig ist, also < directory_list.size(). Der Operator[] wirft
keine Exception vom Typ std::out_of_range!
Achja:
|
C-/C++-Quelltext
|
1
|
while ( 0 != (entry = readdir( handle ) ))
|
Die Abfrage auf 0 ist unnötig:
|
C-/C++-Quelltext
|
1
|
while ( entry = readdir( handle ) )
|
Das reicht vollkommen da C++ Pointer direkt in den Datentyp bool konvertiert.