저는이 작업의 초기 단계에서 정말 어려움을 겪고 있습니다. 사용자가 명령 줄에 텍스트 파일의 이름을 입력하게해야합니다. 파일은 공백으로 구분 된 정수의 목록입니다. 숫자를 거쳐 2D 배열이나 벡터에 입력하고 싶습니다. 이것은 항상 정사각형 차원 배열이 될 것이므로 100 개의 숫자가 있다면 10X10을 할 수 있습니다. 저는 거의 (1 차원) 배열에 익숙합니다 (거의 2 개월 초보자를위한). 그러나 이것의 텍스트 파일 측면에서 입력을 얻는 것과 정말로 혼란 스럽습니다. 내가 익숙하지 않은 주요 부분은 텍스트 파일과 동적 배열에서 읽는 것입니다. (런타임까지는 크기를 알 수 없으므로 여기에서 getline을 사용합니다.)C++ 텍스트 파일을 읽고 2D 배열에 숫자를 입력하십시오.
답변
C++은 기본적으로 크기가 조정되는 벡터를 지원하고 그래서 당신은 임의의 크기의 "배열"을 가질 수 있습니다. 각 행을 읽고 벡터를 만들려면 getline을 사용하십시오. 012stream을 사용하여 파일을 열 수 있습니다 : ifstream fileToRead("file.txt");
그리고 나서 fileToRead에서 읽을 수 있습니다.
우리에 의해 이차원 어레이를 선언 할 0
vector< vector<int> > SquareArray;
그리고 파일을 읽고 입력 할 수 있습니다.
for (int i = 0; i < N; ++i)
{
vector<int> row;
for (int j = 0; j < N; ++j)
{
//same limit because its square
int readFromFile = 0;
fileStream >> readFromFile;
row.push_back(readFromFile);
}
SquareArray.push_back(row); //copies row into SquareArray
}
N은 무엇인지 어떻게 알 수 있습니까? 당신이 그들 모두를 통과 할 때까지 얼마나 많은 숫자가 있는지 모른다면? – Marla
@Marla 무엇? N은 임의의 숫자입니다. N은 배열의 길이라고 어디에서 말하지 않았다. –
첫째, 텍스트 파일을 엽니 다
std::ifstream in("in.txt");
그런 다음 파일에서 각 행을 얻기 위해, 우리는getline
를 사용합니다. 또한 줄의 내용을 담을 문자열이 필요합니다. 이는<string>
헤더에 포함되어 있습니다.#include <string>
우리는 또한 우리가 파일의 끝에 도달 할 때까지 각 라인을 읽는 계속해야합니다, 그래서 우리는 반복 메커니즘이 필요합니다.
는std::string str; while (std::getline(in, str))
getline
반환 입력을 읽을 때 에러가 발생할 경우 해당 기본 비트 마스크에 설정된 비트를 가질 것이다 스트림 파일을 예를 들면. 그것이 루핑이 작동하는 방법입니다.문자열 내부에 문자열을 저장하고 벡터에 전달해야합니다. 이런 식으로 뭔가 : 위의 코드에 대한
std::vector<std::vector<int>> orig(10, std::vector<int>(10)); // Your original 2D array int i = 0; while (std::getline(in, str)) { std::stringstream ss(str); std::vector<int>& v = orig[i]; std::copy(std::istream_iterator<int>(ss), std::istream_iterator<int>(), std::back_inserter(v)); ++i; }
, 당신은
<iterator>
및<algorithm>
헤더를해야 할 것입니다.
- 1. 텍스트 파일에서 문자를 읽고 2D 배열에 저장
- 2. 텍스트 파일에서 읽고 다중 2d 배열에 넣습니다.
- 3. 배열에 단어와 숫자의 파일을 입력하십시오. C++
- 4. 텍스트 파일을 읽고 값을 배열에 저장하는 방법
- 5. 파일을 2D 배열에 쓰기
- 6. 파일을 읽고 배열에 넣으시겠습니까?
- 7. scanf를 사용하여 공백으로 구분 된 숫자를 읽고 배열에 저장 - C
- 8. dat 파일을 읽고 배열에 숫자 추가하기
- 9. 숫자를 HTML 양식에 입력하십시오.
- 10. 레지스트리 키를 읽고 텍스트 상자에 값을 입력하십시오.
- 11. 텍스트 파일을 읽고 토큰을 2D 매트릭스에 넣는 데 문제가 있습니다.
- 12. 웹 사이트의 텍스트 상자에 숫자를 입력하십시오.
- 13. 자바가 텍스트 파일을 읽고 각 줄을 자체 배열에 저장
- 14. Java에서 intergers의 2D 배열로 png 파일을 입력하십시오.
- 15. 2D 배열로 데이터 파일을 읽고 화면에 인쇄하려고합니다.
- 16. Android : 텍스트 파일에서 double을 읽고 배열에 넣기
- 17. 텍스트 파일을 읽고 C 행렬에 저장하는 방법
- 18. 텍스트 파일을 읽고 C#으로 업데이트하십시오.
- 19. C++ 텍스트 파일을 읽고 벡터에 저장
- 20. C : 텍스트 파일을 읽고 데이터 조작
- 21. 텍스트 파일을 읽고 C++로 데이터 표시
- 22. 배열에 숫자를 한꺼번에 넣는 C
- 23. C#에서 텍스트 파일의 정수를 읽고 배열에 쓰기
- 24. C++ 2D 배열에 대한 포인터
- 25. 2D 배열에 대한 C++ 포인터
- 26. 배열에 파일을 읽고 있지만 특정 지점까지
- 27. Bash는 txt 파일을 읽고 배열에 저장합니다.
- 28. 파일을 읽고 배열에 저장하고 텍스트 상자에 합계를 표시하십시오.
- 29. 어떻게하면 텍스트 파일을 읽고 C의 배열에 저장할 수 있습니까
- 30. 오디오/음악 파일을 이산 2D 도메인/2D 배열에 매핑
[fopen] (http://www.cplusplus.com/reference/cstdio/fopen/) 및 [fread] (http://www.cplusplus.com/reference/cstdio/fread/)에서 살펴보십시오. 파일에서 입력을 처리하는 방법을 배우십시오. – torak
@torak 틀린 언어? –
@ChristianRau C++에서 fopen과 fread를 사용할 수 있습니다. –