Проблема с несколькими исходными файлами в C ++ - PullRequest
0 голосов
/ 09 февраля 2011

У меня была проблема с реализацией файла с несколькими исходными текстами

Моя функция такова:

inline bool TextContains(char *text, char ch) {
  while ( *text ) {
    if ( *text++ == ch )
      return true;
  }
  return false;
}

void Split(char *text, char *delims, vector<string> &words) {
  int beg;
  for (int i = 0; text[i]; ++i) {

    while ( text[i] && TextContains(delims, text[i]) )
      ++i;

    beg = i;

    while ( text[i] && !TextContains(delims, text[i]) )
      ++i;
      words.push_back( string(&text[beg], &text[i]) );
    }
}

string convertInt(int number)
{
   stringstream ss;
   ss << number;
   return ss.str();
}


string dateFormatChecker(const char *date){
string strdate=date;
char getdate[50];
strcpy_s(getdate, strdate.c_str());

vector<string> checkdate;
Split( getdate, "-", checkdate );
int year, month, day;
year=atoi(checkdate[0].c_str());
month=atoi(checkdate[1].c_str());
day=atoi(checkdate[2].c_str());

string checkyear, checkmonth, checkday, checkhour, checkminute, checksecond;

        checkyear = convertInt(year);
        if(month<10){
        checkmonth = "0" + convertInt(month);
        }
        else{
        checkmonth = convertInt(month);
        }
        if(day<10){
        checkday = "0" + convertInt(day);
        }
        else{
        checkday = convertInt(day);
        }

        if (checkyear.size() != checkdate[0].size()||
            checkmonth.size() != checkdate[1].size()||
            checkday.size() != checkdate[2].size()){
            return "";
        }
return date;
}

string dateandtimeFormatChecker(const char *dateandtime){
    string strdate=dateandtime;
    char getdateandtime[50];
    strcpy_s(getdateandtime, strdate.c_str());

    vector<string> checkdateandtime;
        Split( getdateandtime, "-: ", checkdateandtime );
    int year, month, day, hour, minute, second;
        year=atoi(checkdateandtime[0].c_str());
        month=atoi(checkdateandtime[1].c_str());
        day=atoi(checkdateandtime[2].c_str());
        hour=atoi(checkdateandtime[3].c_str());
        minute=atoi(checkdateandtime[4].c_str());
        second=atoi(checkdateandtime[5].c_str());

        string checkyear, checkmonth, checkday, checkhour, checkminute, checksecond;

        checkyear = convertInt(year);
        if(month<10){
        checkmonth = "0" + convertInt(month);
        }
        else{
        checkmonth = convertInt(month);
        }
        if(day<10){
        checkday = "0" + convertInt(day);
        }
        else{
        checkday = convertInt(day);
        }
        if(hour<10){
        checkhour = "0" + convertInt(hour);
        }
        else{
        checkhour = convertInt(hour);
        }
        if(minute<10){
        checkminute = "0" + convertInt(minute);
        }
        else{
        checkminute = convertInt(minute);
        }
        if(second<10){
        checksecond = "0" + convertInt(second);
        }
        else{
        checksecond = convertInt(second);
        }


        if (checkyear.size() != checkdateandtime[0].size()||
            checkmonth.size() != checkdateandtime[1].size()||
            checkday.size() != checkdateandtime[2].size()||
            checkhour.size() != checkdateandtime[3].size()||
            checkminute.size() != checkdateandtime[4].size()||
            checksecond.size() != checkdateandtime[5].size()){
            return "";
        }

    return dateandtime;     
}

string FormatPosDataXml (const char * SequenceNumber, const char * RetailStoreID, const char * WorkStationID, const char * BusinessDayDate, const char * BeginDateTime, const char * StartTransTime, const char * EndTransTime, const char * EndDateTime, const char * RawData){

string output;

string bdd, bdt, stt, ett, edt;

bdd = dateFormatChecker(BusinessDayDate);
bdt = dateandtimeFormatChecker(BeginDateTime);
stt = dateandtimeFormatChecker(StartTransTime);
ett = dateandtimeFormatChecker(EndTransTime);
edt = dateandtimeFormatChecker(EndDateTime);

cout << "<Transaction>\n\t<RetailStoreID>"
     << RetailStoreID   << "</RetailStoreID>\n\t<WorkStationID>"
     << WorkStationID   << "</WorkStationID>\n\t<SequenceNumber>"
     << SequenceNumber  << "</SequenceNumber>\n\t<BusinessDayDate>"
     << bdd             << "</BusinessDayDate>\n\t<BeginDateTime>"
     << bdt             << "</BeginDateTime>\n\t<StartTransTime>"
     << stt             << "</StartTransTime>\n\t<EndTransTime>"
     << ett             << "</EndTransTime>\n\t<EndDateTime>"
     << edt             << "</EndDateTime>\n\t<RawData>"
     << RawData         << "</RawData>\n</Transaction>";

output = _getch();
return output; 
}

string getInput(char *data){
vector<string> words;

Split( data, ",", words );

  char SN[11], RSI[200], WSI[200], BDD[100], BDT[100], STT[100], ETT[100], EDT[100], RD[100];

  strcpy_s(SN, words[0].c_str());
  strcpy_s(RSI, words[1].c_str());
  strcpy_s(WSI, words[2].c_str()); 
  strcpy_s(BDD, words[3].c_str());
  strcpy_s(BDT, words[4].c_str());
  strcpy_s(STT, words[5].c_str());
  strcpy_s(ETT, words[6].c_str());
  strcpy_s(EDT, words[7].c_str());
  strcpy_s(RD, words[8].c_str());

  string PosData;
  PosData = FormatPosDataXml(SN,RSI,WSI,BDD,BDT,STT,ETT,EDT,RD);

return PosData;

}

Но всякий раз, когда я помещаю его в заголовочный файл, вот так:

string getInput(char *data);

Я всегда получаю множество ошибок, таких как необъявленный идентификатор, переопределение строки int и так далее ...

Кто-нибудь может мне помочь?

Ответы [ 3 ]

0 голосов
/ 09 февраля 2011

Относительно этой ошибки:

'string' не является допустимым аргументом типа шаблона для параметра '_Ty'

и

неоднозначный символ 'std :: vector'

Согласны ли вы с использованием "std ::" против "использования пространства имен std;"?

0 голосов
/ 10 февраля 2011

TNX для информационных парней .. я наконец-то получил правильные коды.

сначала я должен поместить заголовки в функцию, чтобы она не вызывала некоторые ошибки.

Затем я удалю обычный заголовок, кроме заголовка, который я сделал. и тогда я понял ...

0 голосов
/ 09 февраля 2011

Я думаю, что причиной проблемы может быть порядок заголовка #includes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...