gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:04:44 30 4
gpt4 key购买 nike

我有以下代码:

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 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* 到底层字符串。只要 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());

关于c++ - 将 std::wstring 转换为 const wchar_t x[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36405537/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com