텍스트 파일에서 숫자를 읽고 싶습니다. 파일에 다음과 같은 번호가 있습니다.파일에서 번호 읽기 C++
3 5 7 9 20 25 30 40 55 56 57 60 62 1 4 7 11 14 25 44 47 55 57 100 -5 100 1000 1005 -12 1000 1001
공간 숫자를 분리합니다. 이 코드를 읽으려면 몇 가지 코드를 만들어야했지만 문제는 줄 끝의 숫자를 읽는 것이 정확하지 않고 올바르게 읽는 방법을 모르겠다는 것입니다 (CRLF 문자 문제). 누군가 나를 도와 줄 수 있습니까? 내 코드는 다음과 같습니다.
헤더 base.h
#include <iostream>
#include <fstream>
#include <string.h>
#include <cstdlib>
using namespace std;
class L
{
public:
int value;
};
class t
{
public:
L *line;
t(){
line = new L[10000];
}
};
class baza
{
public:
ifstream in;
ofstream out;
string lines;
char word1[1] ;
int wordint;
char tab[255];
int *tab2;
int x;
int y;
int z;
int a;
int b;
int c;
int ile;
int multiplier;
bool negative ;
int negative;
t *table;
base();
};
다음
있습니다 base.cpp
#include "base.h"
base::base()
{
wordint=0;
a=2000;
b=0;
tab2 =new int [a];
x=0;
y=0;
z=0;
for(int i=0;i<a;i++)
{
tab2[i]=0;
}
multiplier=1;
negative =false;
negative1=-1;
lines="0";
ile=0;
in.open("in.txt"); //open file
do
{
getline(in,lines);
if(lines!="0") //how many lines is in the file
{
ile++;
}
} while(in.eof()!=true);
in.close();
tablica =new t[ile];
tab5 = new int[ile];
in.open("in.txt");
for(int i=0;i<ile;i++)
{
do
{
in.get(word1[0]);
if(word1[0]==45) // check if sign is negative
{
word1[0]=0;
negative=true;
in.get(word1[0]);
}
if(word1[0]!= 10) //check if not LF
{
if(word1[0]!=' ') //check if not space
{
tab[x]= word1[0];
x++;
}
}
if(word1[0]==' ') //if space then convert from char to int
{
y=x-1;
do {
word1[0]=tab[y];
wordint=atoi(word1);
wordint=wordint*multiplier;
tab2[z]=tab2[z]+wordint;
y--;
multiplier=multiplier*10;
} while(y>=0);
x=0;
multiplier=1;
if(negative==true) //check if negative
{
tab2[z]=tab2[z]*negative1;
negative=false;
}
z++;
c=z;
tab5[i]=c;
}
/**if(word1[0]== '10') //its not work but same as above only check if LF
{
y=x-1;
do{
word1[0]=tab[y];
wordint=atoi(word1);
wordint=wordint*multiplier;
cout<<"dupa";
tab2[z]=tab2[z]+wordint;
y--;
multiplier=multiplier*10;
} while(y>=0);
x=0;
multiplier=1;
if(negative==true) //check if negative
{
tab2[z]=tab2[z]*negative1;
negative=false;
}
z++;
c=z;
tab5[i]=c;
}*/
} while(word1[0]!=10);
for(int j=0;j<z;j++) //write to table
{
table[i].line[j].value=tab2[j];
cout<< table[i].line[j].value<<endl;
tab2[j]=0;
}
z=0;
}
}
짧고 독립적 인 컴파일 가능한 예제를 게시 해보십시오. http://sscce.org/ –