繁体   English   中英

将std :: wstring转换为const wchar_t x []

[英]Casting std::wstring to const wchar_t x[]

我有以下代码:

void get_id(int i, std::vector<item>& _items) {

    auto cpool = get_db_connection_pool();
    auto con = cpool->get_connection();
    db::result m;

    int _id;

    if (i == 1) {               

        const wchar_t sql[] = LR"***(
            SELECT * FROM TABLE1                    
        )***";

        db::statement st(con, sql);

        m = st.execute().into(_id);

        while (m.move_next()) {                 
            _items.push_back(item {_id});
        }
    }
    else {
        const wchar_t sql[] = LR"***(
            SELECT * FROM TABLE2                    
        )***";

        db::statement st(con, sql);

        m = st.execute().into(_id);

        while (m.move_next()) {                 
            _items.push_back(item {_id});
        }
    }
}

如您所见,代码

        db::statement st(con, sql);

        m = st.execute().into(_id);

        while (m.move_next()) {                 
            _items.push_back(item {_id});
        }

在if-else语句中被重复写入。 我想将这部分移出if if else情况,例如:

void get_id(int i, std::vector<item>& _items) {

    auto cpool = get_db_connection_pool();
    auto con = cpool->get_connection();
    db::result m;

    int _id;

    if (i == 1) {               

        const wchar_t sql[] = LR"***(
            SELECT * FROM TABLE1                    
        )***";
    }
    else {
        const wchar_t sql[] = LR"***(
            SELECT * FROM TABLE2                    
        )***";
    }


    db::statement st(con, sql);

    m = st.execute().into(_id);

    while (m.move_next()) {                 
        _items.push_back(item {_id});
    }
}

我试图用临时std::wstring在if-else情况下替换sql[] ,但是我不知道如何将std::wstringconst wchar_t sql[]

std::wstring具有成员函数c_str ,该const wchar_t*将向基本字符串返回const wchar_t* 只要db::statement使用const wchar_t []const wchar_t *您就可以使用

std::wstring sql;
if (i == 1) {               

    sql = LR"***(
        SELECT * FROM TABLE1                    
    )***";
}
else {
    sql = LR"***(
        SELECT * FROM TABLE2                    
    )***";
}

db::statement st(con, sql.c_str());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM