c ++ извлечь строку - PullRequest
       7

c ++ извлечь строку

2 голосов
/ 29 июля 2010

у меня есть 26/01/10 09:20:20 MAL BIN BIN275 TSTCB U8L5 O/CR ..N UCOS Operated в строке

я хочу извлечь столбец 36 в 60, то есть

BIN275 TSTCB U8L5 O / CR

последний вывод, который я хочу включить

O/CR

Есть ли какое-нибудь простое решение, чтобы уладить это? уже сделать это, но не работает.

#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;

}

спасибо

Ответы [ 2 ]

2 голосов
/ 29 июля 2010

Поскольку вы, похоже, хотите использовать C ++, мы могли бы написать это немного более элегантно, как:

#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);
}
2 голосов
/ 29 июля 2010

Ваша программа в основном работает, но номера ваших столбцов неверны. Попробуйте:

int i=26;

while (i < 48)

Это дает мне результат, который вы указываете.

...