2013-03-20 2 views
-10

C++에서 .dat 파일을 읽는 방법에 따라이 파일에는 텍스트 데이터 (구분 기호로 구성된 숫자 및 문자)가 포함되어 있습니다. fstream 표준 라이브러리가 최선의 선택인가? 어떻게 파일 경로를 정의 할 수 있을까요? 두 번째 질문은 이러한 파일을 읽고 SQL 서버 데이터베이스에로드하려는 경우 다른 메커니즘입니까?C++에서 .dat 파일을 읽는 방법

+1

을 살펴 데이터베이스에 데이터를 저장하려면 . "fstream 라이브러리"가 없습니다. 아마도 표준 라이브러리 클래스'std :: fstream'을 의미 할 것입니다. 그러나 그 질문은 동질감입니다 : 예, 당신은 그것을 사용하지만, 그것은 당신을 도울 수 없습니다. 마지막으로 SQL 서버에로드하는 방법을 알 수 없으므로 처리중인 데이터에 대한 정보는 제공하지 않습니다. –

+0

@KonradRudolph 파일에는 텍스트가 들어 있으며, 데이터베이스에로드 할 때 각 파일이 테이블을 형성하는 방식으로 작성됩니다. 구분 기호로 열을 구분하기 위해 수동으로 확장명을 txt로 변경하고 열어서 읽을 수 있습니다. C++ 코드를 작성하는 방법을 알아야합니다. – Hawk

+0

@jcarlos @jcarlos 이전에 파일을 처리하지 않았으므로 일부 브리핑을 권장합니다. 튜토리얼 나는 감사 할 것입니다 – Hawk

답변

2

예, 이에 대해 fstream을 사용할 수 있습니다.

구분 기호로 나뉘어 진 배열로 데이터를 분할 할 때 을 사용할 수있는 코드가 있습니다. 단락 기호로 DELIMITER를 변경하십시오. .dat`는 일반적인 파일 확장자입니다`더 ".DAT 파일 형식이"없다 :

#include <iostream> 
using std::cout; 
using std::endl; 

#include <fstream> 
using std::ifstream; 

#include <cstring> 

const int MAX_CHARS_PER_LINE = 512; 
const int MAX_TOKENS_PER_LINE = 20; 
const char* const DELIMITER = " "; 

int main() 
{ 
    // create a file-reading object 
    ifstream fin; 
    fin.open("data.txt"); // open a file 
    if (!fin.good()) 
    return 1; // exit if file not found 

    // read each line of the file 
    while (!fin.eof()) 
    { 
    // read an entire line into memory 
    char buf[MAX_CHARS_PER_LINE]; 
    fin.getline(buf, MAX_CHARS_PER_LINE); 

    // parse the line into blank-delimited tokens 
    int n = 0; // a for-loop index 

    // array to store memory addresses of the tokens in buf 
    const char* token[MAX_TOKENS_PER_LINE] = {}; // initialize to 0 

    // parse the line 
    token[0] = strtok(buf, DELIMITER); // first token 
    if (token[0]) // zero if line is blank 
    { 
     for (n = 1; n < MAX_TOKENS_PER_LINE; n++) 
     { 
    token[n] = strtok(0, DELIMITER); // subsequent tokens 
     if (!token[n]) break; // no more tokens 
    } 
} 

    // process (print) the tokens 
    for (int i = 0; i < n; i++) // n = #of tokens 
     cout << "Token[" << i << "] = " << token[i] << endl; 
    cout << endl; 
    } 
} 

귀하의 질문에 대답 할 수있는 충분한 정보를 제공 MySql

+1

감사합니다, 이것은 매우 유용 할 것입니다 – Hawk

0

글쎄, 당신은 스스로 그것을 할 수있다. .. 그러나 : 그냥 튜토리얼을해라. 예를 들어 : http://www.cplusplus.com/doc/tutorial/files/는 대신 열어 .DAT (당신이 텍스트 데이터 만 포함 말 때문에 ..) SQL 데이터베이스에 저장

, 난 가정 .txt 인 지금의 MySQL 될 것입니다 : http://www.nitecon.com/tutorials-articles/develop/cpp/c-mysql-beginner-tutorial/

단계 : 파일을 열고 데이터베이스 연결을 연 다음 INSERT INTO .... done을 수행하십시오.

관련 문제