2013-06-01 164 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

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