학교 프로젝트의 일환으로 인벤토리 * .txt 파일을 C++의 배열로 가져 와서 나중에 * .txt 파일로 가져오고 싶습니다. 프로그램.C++ 텍스트 파일을 다차원 배열 문제로 변환
텍스트 파일은 식료품 이야기 항목을 나타내는 10 개의 행으로 시작하고 항목의 이름, 가격 및 수량을 나타내는 세 개의 열을 포함합니다. 나는 파일에서 읽을 수 있었고 심지어 표시되는 각 행 앞에 번호를 추가했습니다. 이제는 "직원"사용자가 항목을 한 번에 하나씩 변경할 수 있도록 텍스트 파일을 문자열 배열로 가져온 다음 해당 배열을 다시 * .txt 파일로 덤프 할 수 있습니다.
아래 코드는 지금까지 내가 시도한 코드입니다. 파일에서 행 수를 얻을 수는 있지만 계산 된 열 또는 표시된 행의 데이터를 가져올 수 없습니다. 프로그램을 실행하면 행 (10)과 Cols (0)가 표시된 후 10 개의 빈 줄이 표시됩니다.
* .txt 파일의 열은 일반적으로 공백으로 구분됩니다. 나는 탭을 시도하고 시도 : 방금 내가 추측하고있는 콘솔을 표시하기 위해 메모리 주소가 있었고 충돌이 발생했습니다.
불행히도, 우리는 프로그램을 디버깅하는 데별로 익숙하지 않았으며, 강의 계획서에서 보면 완전히 철저히 다루지 않을 것이라고 생각합니다. 그래서 더 이상 문제를 해결할 방법을 모르겠습니다. 나는 지난 몇 시간 동안 Google-ing을 보냈으며 실제로 도움을 요청할 필요가 있음을 알게되었습니다.
프로젝트에는이 구성 요소보다 훨씬 많은 내용이 포함되어 있지만 실제로이 부분에 집착하고 있습니다. 나는 나를 위해이 일을 할 누군가를 요구하는 것이 아니지만, 누군가 내가 뭘 잘못하고 있고 다차원 배열로 텍스트 파일을 얻으려고 최선의 방향으로 나를 가리킬 수 있다면, 나는 정말로 감사 할 것이다.
감사합니다.
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <sstream>
#include <array>
int row = 0;
int col = 0;
using namespace std;
int main()
{
string lines;
int x;
string textArray[2][2];
ifstream invFile;
invFile.open("inventory.txt");
if(invFile.fail()){
cerr << "The file cannot be opened!";
exit(1);
}
cout << "\n" << endl;
while(invFile.good()) {
while(getline(invFile, lines)) {
istringstream streamA(lines);
col = 0;
while(streamA >> x) {
cout << x;
textArray[row][col] = x;
col++;
}
row++;
}
}
invFile.close();
cout << "Rows: " << row << endl;
cout << "Cols: " << col << endl;
cout << "\n" << endl;
for(int i=0; i<row; i++){
for(int j=0; j<col; j++){
cout << "Line: " << i << textArray[i][j] << ".";
}
cout << "\n";
}
return(0);
}
=============================
inventory.txt:
Apples 1.25 20
Oranges 1.75 20
Kiwi 2.50 15
Pineapples 5.50 20
Tomatoes 1.50 20
Onions 2.00 20
Corn 1.80 20
Carrots 2.30 20
Milk 4.50 20
Cheese 2.25 20
두 가지 문제점이 있습니다. 첫 번째 변수는'x' 변수의 타입입니다. 예를 들어 "Oranges"는 숫자로 분석 할 수 없으며 첫 번째 시도에서'while (streamA >> x)'가 실패하게됩니다. 두 번째 문제는'textArray' 선언입니다. 배열 경계는 사용자가 보유한 데이터를 저장하기에 충분하지 않습니다. 'textArray [20] [3]'을 사용하는 것이 효과적 일지 모르지만 왜 그 이유가 무엇인지 이해해야합니다. – msandiford
두 번째 문장을 보았을 때 나는 그것을 때리고 나서 몇 시간 동안 상처받을 것이라고 생각합니다! 나는 이것을 몇 시간 동안 보았고, x의 데이터 타입을 제외하고는 모든 것을 좌우로 바꿨다. 나는 정수 목록을 문자열로 바꾸는 것을 잊어 버렸다. 이전 테스트에서 배열 크기가 더 큽니다. 일단 10으로 다시 이동하고 x를 문자열로 변경하면 모든 것이 완벽하게 작동합니다. 정말 고맙습니다! – jayvee