C++ 铸造标准::wstring至常数wchar\u t x[]
我有以下代码:C++ 铸造标准::wstring至常数wchar\u t x[],c++,C++,我有以下代码: 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[] =
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});
}
}
}
在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::wstring强制转换为const wchar_t sql[]。std::wstring有一个成员函数c_str,该函数将向基础字符串返回const wchar_t*。只要db::语句接受常量wchar\u t[]或常量wchar\u 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());
wstring有一个成员函数c_str,它将向基础字符串返回常量wchar_t*。只要db::语句接受常量wchar\u t[]或常量wchar\u 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_str,但我没想过这样做。谢谢你知道一个我能阅读C++类型的网站吗?我是C++游戏新手,我的知识大部分都在c@PresidentCamacho我用了不少。你可能也想得到一个很好的感谢,我知道c_str,但我没想过这样做。谢谢你知道一个我能阅读C++类型的网站吗?我是C++游戏新手,我的知识大部分都在c@PresidentCamacho我用了不少。你可能还想得到一个好的