Я новичок в C ++, но имею опыт работы с ArcGIS (используется для баз геоданных). Вот некоторый код, который я написал для загрузки текстового файла в файловую базу геоданных … да, я знаю, что объявления и многие вещи выглядят безумно, но я нахожусь в крайнем сроке не знаю, как еще это сделать (и просто не обладаю знаниями). Пожалуйста, дайте мне знать, если у вас есть вклад! Это будет очень цениться.
Проблемы:
-textFile не загружается в GDB
— он застрял в бесконечном цикле (по крайней мере, для загрузки текстового файла в резервный текстовый файл)
-это печатает сумасшедшие вещи в резервный текстовый файл, которых нет в текстовом файле.
— вероятно, другие вещи, о которых я понятия не имею.
-Я отправил сюда, потому что я не уверен, какой ответ он получит на форуме ГИС (гораздо больше по центру питона). Если вы думаете, что он получит хороший совет там … LMK.
Код:
#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
using namespace std;
int main()
{
ifstream textFile;
ofstream backupFile;
ofstream gdb;
string RECORDID;
string SURVEY_TYPE;
string CLIENT;
string CERTIFIED_TO;
string KEYWORDS;
string SECTION;
string TOWNSHIP;
string RANGE;
string GRANT;
string SUBDIVISION;
string PROPERTY_NOTES;
string PROPERTY_FOLDER;
string PROJECT_DWG;
string FEMA_FIRMETTE;
string LOT_GRADE;
string FEMA_ELEVATION;
string JOB_SHEET;
string FIELD_NOTES;
string ENGINEER_FOLDER;
string ADDRESS;
string CITY;
string STATE;
string ZIPCODE;
string COUNTY;
string INTERSECT_STREET;
string ADDITIONAL_NOTES;
double LATITUDE;
double LONGITUDE;
string HTML;
string DATE_FIELD_WORK;
string JOB_NUMBER;
string SEC_TWN_RNG;
string PROJECT_PDF;
string LOT;
string USER;
string BLOCK;
string TRACT;
string DMS_LAT;
string DMS_LONG;
string PLAT_BOOK;
string PLAT_PGS;
string UNIT;
string PHASE;
string HSE;
string OWNER;
string SUBDIVISION_PLAT;
string CTY_FFE_CERT;
string JOB_NUM_ID;
string DATE_ADDED;cout << "Textfile uploading" << endl;
textFile.open("test2.txt");
backupFile.open("backup2.txt");
gdb.open("test.gdb\\project");
textFile >> RECORDID >> SURVEY_TYPE >> CLIENT >> CERTIFIED_TO >> KEYWORDS >> SECTION >> TOWNSHIP >> RANGE >> GRANT >> SUBDIVISION >> PROPERTY_NOTES >> PROPERTY_FOLDER >> PROJECT_DWG >> FEMA_FIRMETTE >> LOT_GRADE >> FEMA_ELEVATION >> JOB_SHEET >> FIELD_NOTES >> ENGINEER_FOLDER >> ADDRESS >> CITY >> STATE >> ZIPCODE >> COUNTY >> INTERSECT_STREET >> ADDITIONAL_NOTES >> LATITUDE >> LONGITUDE >> HTML >> DATE_FIELD_WORK >> JOB_NUMBER >> SEC_TWN_RNG >> PROJECT_PDF >> LOT >> USER >> BLOCK >> TRACT >> DMS_LAT >> DMS_LONG >> PLAT_BOOK >> PLAT_PGS >> UNIT >> PHASE >> HSE >> OWNER >> SUBDIVISION_PLAT >> CTY_FFE_CERT >> JOB_NUM_ID >> DATE_ADDED;
while(!(textFile.eof()))
{
gdb << RECORDID << SURVEY_TYPE << CLIENT << CERTIFIED_TO << KEYWORDS << SECTION << TOWNSHIP << RANGE << GRANT << SUBDIVISION << PROPERTY_NOTES << PROPERTY_FOLDER << PROJECT_DWG << FEMA_FIRMETTE << LOT_GRADE << FEMA_ELEVATION << JOB_SHEET << FIELD_NOTES << ENGINEER_FOLDER << ADDRESS << CITY << STATE << ZIPCODE << COUNTY << INTERSECT_STREET << ADDITIONAL_NOTES << LATITUDE << LONGITUDE << HTML << DATE_FIELD_WORK << JOB_NUMBER << SEC_TWN_RNG << PROJECT_PDF << LOT << USER << BLOCK << TRACT << DMS_LAT << DMS_LONG << PLAT_BOOK << PLAT_PGS << UNIT << PHASE << HSE << OWNER << SUBDIVISION_PLAT << CTY_FFE_CERT << JOB_NUM_ID << DATE_ADDED << endl;
backupFile << RECORDID << " " << SURVEY_TYPE << " " << CLIENT << " " << CERTIFIED_TO << " " << KEYWORDS << " " << SECTION << " " << TOWNSHIP << " " << RANGE << " " << GRANT << " " << SUBDIVISION << " " << PROPERTY_NOTES << " " << PROPERTY_FOLDER << " " << PROJECT_DWG << " " << FEMA_FIRMETTE << " " << LOT_GRADE << " " << FEMA_ELEVATION << " " << JOB_SHEET << " " << FIELD_NOTES << " " << ENGINEER_FOLDER << " " << ADDRESS << " " << CITY << " " << STATE << " " << ZIPCODE << " " << COUNTY << " " << INTERSECT_STREET << " " << ADDITIONAL_NOTES << " " << LATITUDE << " " << LONGITUDE << " " << HTML << " " << DATE_FIELD_WORK << " " << JOB_NUMBER << " " << SEC_TWN_RNG << " " << PROJECT_PDF << " " << LOT << " " << USER << " " << BLOCK << " " << TRACT << " " << DMS_LAT << " " << DMS_LONG << " " << PLAT_BOOK << " " << PLAT_PGS << " " << UNIT << " " << PHASE << " " << HSE << " " << OWNER << " " << SUBDIVISION_PLAT << " " << CTY_FFE_CERT << " " << JOB_NUM_ID << " " << DATE_ADDED << " " << endl;
cout << "Text file was uploaded." << endl;
}
textFile.close();
backupFile.close();
gdb.close();
system ("Pause");
return 0;
}
ЛЮБЫЙ совет приветствуется. Спасибо вам большое!
Вам нужно позвонить ostream::flush()
записать данные из потока в файл.
while(!(textFile.eof()))
{
gdb << "All your values...";
}
gdb.flush();
//Close your streams
призвание fstream::close()
на gdb
как ты делаешь должен записать любые ожидающие данные в файл. Я не уверен, почему это не происходит для вас, но звоню ostream::flush()
также сделаю это.