2010-07-29 1 views
2

j'ai 26/01/10 09:20:20 MAL BIN BIN275 TSTCB U8L5 O/CR ..N UCOS Operated dans la chaîneC++ chaîne d'extrait

je veux extraire la colonne 36 en 60 qui est

BIN275 TSTCB U8L5 O/CR

la dernière sortie que je veux inclure

O/CR 

est-il simple, solution pour régler cela? déjà faire cela mais ne fonctionne pas.

#include <iostream> 
#include <string.h> 
#include <fstream> 
using namespace std; 
int main() 
{ 
FILE * pFile; 
char mystring [100]; 
int string_length; 

ofstream output; 

pFile = fopen ("input.txt" , "r"); 
output.open("output.txt", ios:: out); 


fgets (mystring , 100 , pFile); 
puts (mystring); 

string_length = strlen(mystring); 

int i=36; 

while (i < 60) 
{ 
output<<mystring[i]; 
++i; 
} 


fclose (pFile); 
output.close(); 
return 0; 

} 

merci

+0

-vous * juste * voulez extraire des colonnes 36-60? Si oui, qu'est-ce que 'O/CR 'a à faire avec? – Jacob

+0

la sortie finale sera 'BIN275 TSTCB U8L5 O/CR' – apis17

Répondre

2

Votre programme fonctionne essentiellement mais vos numéros de colonne ne sont pas corrects. Essayez:

int i=26; 

while (i < 48) 

Il me donne le résultat que vous spécifiez.

+0

test.c: 1: 20: erreur: iostream: Aucun fichier ou répertoire – apis17

+1

@ apis17 Quel est votre environnement de développement? Il devrait trouver iostream. –

+0

Vous devriez nommer le programme test.cpp. –

2

Puisque vous semblez vouloir utiliser C++, nous pourrions écrire un peu plus élégamment:

#include <fstream> 
#include <string> 

int main() 
{ 
    int const colLeft = 36; // or 26 
    int const colRight = 60; // or 48 

    std::ifstream input("input.txt"); 
    std::ofstream output("output.txt"); 

    std::string line; 
    std::getline(input,line); 

    output << line.substr(colLeft,(colRight-colLeft)+1); 
}