首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用libpqxx从数组中获取值?

如何使用libpqxx从数组中获取值?
EN

Stack Overflow用户
提问于 2015-10-28 23:41:09
回答 2查看 1.5K关注 0票数 3

如何使用libpqxx从数组中获取值?例如,我有这样的表:

代码语言:javascript
复制
CREATE TABLE testTable
(
 testArray integer[]
);

如何在C++中获取包含这些值的整型数组?

EN

回答 2

Stack Overflow用户

发布于 2020-10-13 03:17:25

在7.2版中,我使用as_array方法来解析整数数组:

代码语言:javascript
复制
list<unsigned long> found_messages;
pqxx::result res = db->execute(query);
auto arr = res[0][0].as_array();
pair<pqxx::array_parser::juncture, string> elem;
do
{
    elem = arr.get_next();
    if (elem.first == pqxx::array_parser::juncture::string_value)
        found_messages.push_back(stoul(elem.second));
}
while (elem.first != pqxx::array_parser::juncture::done);
票数 2
EN

Stack Overflow用户

发布于 2015-11-02 05:32:05

除了这个我没有找到其他的方法:

代码语言:javascript
复制
result wynikiJednostki(ncWykonaj.exec("SELECT * FROM testTable;"));
result::const_iterator rekord = wynikiJednostki.begin()
vector<unsigned short>* values = getArray(record[1].as<string>());

getArray:

代码语言:javascript
复制
vector<unsigned short>* getArray(string pString)
{
vector<unsigned short>* numbers = new vector<unsigned short>;

pString += ',';
size_t begin = pString.find('{') + 1;
size_t end = pString.find('}');
size_t actualPosition;
string numberS;

while(true)
{
    actualPosition = pString.find(',', begin);
    if(actualPosition > end)
    {
        numberS = pString.substr(begin, end - begin);
        numbers->push_back(atoi(numberS.c_str()));

        return numbers;
    }
    numberS = pString.substr(end, actualPosition - begin);
    numbers->push_back(atoi(numberS.c_str()));
    begin = actualPosition + 1;
}
}

我暂时使用了它,但我认为这不是最好的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33395425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档