Programeru moj, ti si potpuno pomesao STL i .NET. Govoris o .NET a pises STL kod.
Ok, prema tvojim zahtevim kod moze biti ovakav /opet netestirano/:
(pretpostavljam da si dobro brojao one karaktere gde ide umetanje, jer ja nisam)
Pokretanje treba da bude sa dva argumenta u komandnoj liniji:
PROGRAM.EXE fajl_ulazni.log fajl_izlazni.log
Code:
#include <string>
#include <vector>
#include <fstream>
#include <iostream>
using namespace std;
int main( int argc, char* argv[] )
{
if ( argc != 3 )
{
cout << "Program zahteva dva ulazna argumenta:\n";
cout << "PROGRAM fajl_ulazni fajl_izlazni";
cin.ignore();
return 1;
}
string jedna_linija;
vector<string> vektor_stringova;
vektor_stringova.clear();
ifstream fajl_ulazni ( argv[1] );
ofstream fajl_izlazni ( argv[2] );
while ( getline( fajl_ulazni, jedna_linija, '\n') )
vektor_stringova.push_back ( jedna_linija );
for ( int i=0; i<vektor_stringova.size(); i++ )
{
if ( vektor_stringova[i][0] == '[' )
{
string string_broj;
for ( int j=25; vektor_stringova[i][j] != ' '; j++ )
string_broj = string_broj + vektor_stringova[i][j];
int int_broj = atoi( string_broj.c_str() );
for ( int j=0; j<int_broj; j++ )
vektor_stringova[i].insert( 20, " " );
}
fajl_izlazni << vektor_stringova[i] << endl;
}
fajl_izlazni.close();
fajl_ulazni.close();
cin.ignore();
return 0;
}
EDIT: X Files
Uklonjen try/catch blok, na osnovu teksta:
http://www.novetehnologije.com...nvertovanje-teksta-u-broj.aspx
... gde lepo piše da atoi() ne baca izuzetak, pa je stoga i bespotrebno. Ako ipak postoji potreba za utvrdjivanjem da li je broj ili nije, koristiti lexical_cas iz boost biblioteke, što takođe ima upisano na linku.
[Ovu poruku je menjao X Files dana 14.03.2008. u 08:50 GMT+1]