2013-06-01 143 views
0

我有一個C++函數調用date()返回當前日期的字符串:PostgreSQL和C++ - 比較日期

string date() 
{ 
    time_t seconds = time (NULL); 
    struct tm * timeinfo = localtime (&seconds); 
    ostringstream oss; 
    oss << (timeinfo->tm_year + 1900) 
     << "-" << (timeinfo->tm_mon + 1) 
     << "-" << timeinfo->tm_mday; 
    string data = oss.str(); 

    return data; 
} 

我需要的date()返回值與存儲在我的表中的一個值進行比較。這是我到目前爲止已經試過:

if(strcmp(PQgetvalue(res,row,col),date()) != 0) 

然而,編譯器不斷拋出我下面的錯誤:

error: cannot convert ‘std::string {aka std::basic_string}’ to ‘const char*’ for argument ‘2’ to ‘int strcmp(const char*, const char*)’

誰能幫我想想辦法?

+0

對於轉換嘗試使用c_str()函數。 – user1929959

+0

如果您使用'libpqtypes'來處理大部分此類事情,您將節省大量時間和麻煩。 –

+0

現在,我只需要一個快速解決方案來實現一個項目。稍後,我會研究它! –

回答

2

1 - 您可以使用字符串的c_str()方法來獲得訪問底層C字符串:

if(strcmp(PQgetvalue(res,row,col),date().c_str()) != 0) 

2 - 更妙的是,如果你想要去的 「完整的C++」,轉換輸出PQgetvalue爲字符串,並使用比較運算符:

if(string(PQgetvalue(res,row,col)) == date()) 
+0

您的第二點應該是第一點。你甚至可以省略明確的字符指針轉換爲字符串。 – Lol4t0

+0

工作正常!非常感謝你! –