나는 발전소 모니터링에 대한 프로젝트를 갖고 있으며 두 파일 (Excel 파일 또는 텍스트 파일) 중 하나에서 데이터를 읽어야합니다. 데이터는 정수와 문자열이 혼합 된 97 개의 열과 515 개의 행으로 구성됩니다. 따라서, 내 생각은 97 배열을 선언하여 각 열의 값을 각각의 개별 배열에 저장하는 것이 었습니다. 그러나 일부 열은 여러 단어가 포함 된 문자열을 포함합니다. 따라서 하나의 행에는 한 단어가있을 수 있지만 다른 행에는 세 개가있을 수 있습니다. 행에서 읽을 때 프로그램이 전체 구문을 읽으 려 할 때 각 문자열을 다른 문자열 배열에 할당하므로 문제가됩니다. 하나의 문자열로 저장하고 해당 열에 대해 초기화 된 배열에 해당 문자열을 저장합니다. 이로 인해 데이터가 바뀌고 일부 데이터는 올바른 배열 등에 할당되지 않습니다.탭을 사용하지 않는 한 공백을 건너 뛰지 않고 Excel/Text 파일에서 읽기
저는 C++에 대한 기본적인 지식을 가지고 있지만, 특별한 것은 없지만, istreams가 공간을 만났을 때 읽기를 멈추고 차별화하지 않는다고 착각하지는 않습니다 탭 스페이스 또는 일반 스페이스 바 스페이스 사이. 누구든지 데이터를 올바르게 저장하고 KPI를 개발할 수 있도록이 문제를 해결할 수 있습니까?
나는 데이터의 일부와 코드의 4 개 열을 읽으려는 시도를 포함시켰다. 각 열은 데이터의 텍스트 파일 버전에서 탭으로 구분됩니다.
ID Com NID Plant Operator
3 N Rock Alabama Elec Co
3 N Rock Alabama Elec Co
4 N Walt Boulder Co Alabama Elec Co
10 N 3 Greene County Alabama Elec Co
46 N 1 Browns Ferry Tennessee Valley Authority
ID 컴 NID 공장 운영자 3 N 록 알라바마 선거법 공동 3 N 록 알라바마 선거법 공동 4 N 월트 볼더 공동 알라바마 선거법 공동 10 N 3 그린 카운티 알라바마 선거법은 공동
(46) N (1) 브라운 Ferry Tennessee Valley Authority
네 번째 열에 4 개의 문자열 배열이있는 경우 첫 번째 행에서 3은 array1에, N은 array2에, rock은 array3에, Elec은 array4에 할당됩니다. 그러나 행 3에서는 4가 array1에 할당되고 N은 array2에 할당되고 Walt는 배열 3에 할당되지만 Boulder는 저장되는 전체 식물 이름 대신 배열 4에 할당됩니다. 행의 5에서 유사한 운명이 발생하여 데이터 구성을 엉망으로 만들고 올바르게 조작 할 수 없습니다.
//numLines is taken from previous code to determine the
//number of lines in the file
std::string *ID = new std::string[numLines];
std::string *YN = new std::string[numLines];
std::string *nuclearID = new std::string[numLines];
std::string *plantName = new std::string[numLines];
std::ifstream infile;
infile.open("nocommagenerationdata.dat");
if (infile.is_open()) {
int i = 0;
while (i<numLines) {
infile >> ID[i] >> YN[i] >> nuclearID[i] >> plantName[i];
std::cout << ID[i] << YN[i] << nuclearID[i] << plantName[i] << std::endl;
i++;
}
}
infile.close();
은 또한 초기에 다른 있지만, 하나의 행 라인에서 데이터가 명확 데이터로 인해 공간 문제로 문자열 읽기 바로 그의 이동 것으로 나타났다 있는지 확인하기 위해 카운터 문자열을 초기화하는 시도 .
std::ifstream infile;
infile.open("nocommagenerationdata.dat");
if (infile.is_open()) {
int i = 0; std::string temp;
while (i<numLines) {
infile >> temp;
std::cout << i << "." << temp << std::endl;
i++;
}
}
infile.close();
나는 어떤 도움 그냥 몇 가지 힌트