![](/img/trans.png)
[英]std::wstring not working with the [] operator of std::map<const wchar_t*, const char*>
[英]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::wstring
为const 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.