我是C ++初学者,但是经历过ArcGIS(用于地理数据库)以下是我编写的一些代码,用于将文本文件上传到文件地理数据库中......是的,我知道声明,很多东西看起来很疯狂但是我处于截止日期,并且不知道该怎么做(而且只是没有知识)。如果您有任何意见,请告诉我!非常感谢。
问题: -textFile没有上传到gdb - 它被困在一个无限循环中(至少用于将文本文件上传到备份文本文件) -it将打印的东西打印到不在文本文件中的备份文本文件中。 - 可能是我不知道的其他事情。 - 我发布在这里是因为我不确定它将在GIS论坛上得到什么样的响应(更多以python为中心)。如果你认为它会得到很好的建议... 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;
}
任何建议表示赞赏。非常感谢你!
答案 0 :(得分:0)
您需要调用ostream::flush()
将数据从流写入文件。
while(!(textFile.eof()))
{
gdb << "All your values...";
}
gdb.flush();
//Close your streams
在fstream::close()
上调用gdb
,就像您正在 将写入任何未决数据一样。我不确定为什么没有发生这种情况,但是调用ostream::flush()
也会这样做。