FileParser est une bibliothèque .NET conçue pour lire les fichiers texte ligne par ligne, enregistrant le contenu de chaque ligne en types de base var (int, double, string, etc.).
Nullable est activé à partir de 1.6.x. Ce projet est né avec un objectif très spécifique: fournir un outil avec qui analyse facilement les fichiers avec une structure connue, idéalement aussi flexible et facile à utiliser que l'approche IO standard C ++.
Pour ceux qui ne comprennent pas ce que je veux dire, voici un cas d'utilisation simple (également révisé):
Compte tenu de l' input.txt suivante.txt, qui contient un entier n (> = 0) suivi de n double et d'une chaîne finale,
5 1.1 3.14159265 2.2265 5.5 10 fish Un extrait .cpp simple comme le suivant pourrait traiter input.txt , à condition que le fichier soit sélectionné comme source d'entrée standard:
./myExecutable < input.txt > output.txt
# include < iostream >
# include < list >
# include < string >
int main ()
{
int _integer;
std::string _str;
std::list< double > _list;
double _auxdouble;
// Input start;
std::cin>>_integer;
for ( int i= 0 ; i<_integer; ++i)
{
std::cin>>_auxdouble;
_list. push_back (_auxdouble);
}
std::cin>>_str;
// Input end
// Data processing
// Output start
std::cout<<_integer<< " " ;
for ( const double & d : _list)
std::cout<<d<< " " ;
std::cout<<_str;
// Output end
return 0 ;
} Semble sans effort pour traiter ce type de fichiers .txt simples à l'aide de C ++, non?
Eh bien, l'utilisation des choses C # n'est pas si simple, et c'est pourquoi FileParser a été créé pour:
using System ;
using System . Collections . Generic ;
using System . Globalization ;
using System . IO ;
using FileParser ;
namespace FileParserSample
{
class Program
{
static void Main ( string [ ] args )
{
var cultureInfo = new CultureInfo ( "en-US" ) ;
CultureInfo . DefaultThreadCurrentCulture = cultureInfo ;
List < double > listDouble = new List < double > ( ) ;
string str ;
// Input start
IParsedFile file = new ParsedFile ( "SimpleInput.txt" ) ;
IParsedLine firstLine = file . NextLine ( ) ;
int _integer = firstLine . NextElement < int > ( ) ;
for ( int i = 0 ; i < _integer ; ++ i )
listDouble . Add ( firstLine . NextElement < double > ( ) ) ;
str = firstLine . NextElement < string > ( ) ;
// Input end
// Data Processing
// Output start
StreamWriter writer = new StreamWriter ( ".. \ CSharpSimpleOutput.txt" ) ;
using ( writer )
{
writer . WriteLine ( _integer + " " + string . Join ( null , listDouble ) ) ;
}
// Output end
}
}
} J'ai fait de mon mieux pour créer un wiki décrivant l'API FileParser.
Outre le wiki, certains projets réels (propres) où ils ont été utilisés sont:
Si quelqu'un d'autre utilise FileParser, je serai heureux d'accepter les suggestions et de résoudre les doutes.
Ouvrez simplement un problème :)