如何从字符串文字和附加的 int 或 long 值有效地创建 const c 字符串
How to efficiently create const c string from string literal and appended int or long value
在 C++ 中,如何根据文字和附加的 long/int 值有效地创建 C 字符串?我逻辑上想做这样的事情:
const char *sql = "select * from MyTable where ID = " + longId;
其中 longId 是一个 int/long 参数。
这编译了来自 user4581301 评论的答案,如果 user4581301 提出了他们自己的答案并要求我删除,我提议删除。
根据 user4581301 的建议,您可以这样做:
std::string s = "select * from MyTable where ID = " + std::to_string(longId);
您可以使用 s.c_str()
获得等效的 C 字符串,例如:
std::cout << s.c_str() << std::endl;
我认为来自 H.S 的答案。鉴于所问的问题,它是完美的。仅供参考,因为我使用的是 Qt(我在 OP 中没有提到),所以我最终使用了这段代码:
QString sql = QStringLiteral("SELECT v.drive_path_if_builtin, "
"m.full_filepath "
"FROM media_table m "
"INNER JOIN volume_table v "
"ON (v.id = m.volume_id) "
"WHERE m.id = %1;").arg(id);
... 然后在适当的地方,我需要一个 c 字符串,我使用 qPrintable(sql)
.
在 C++ 中,如何根据文字和附加的 long/int 值有效地创建 C 字符串?我逻辑上想做这样的事情:
const char *sql = "select * from MyTable where ID = " + longId;
其中 longId 是一个 int/long 参数。
这编译了来自 user4581301 评论的答案,如果 user4581301 提出了他们自己的答案并要求我删除,我提议删除。
根据 user4581301 的建议,您可以这样做:
std::string s = "select * from MyTable where ID = " + std::to_string(longId);
您可以使用 s.c_str()
获得等效的 C 字符串,例如:
std::cout << s.c_str() << std::endl;
我认为来自 H.S 的答案。鉴于所问的问题,它是完美的。仅供参考,因为我使用的是 Qt(我在 OP 中没有提到),所以我最终使用了这段代码:
QString sql = QStringLiteral("SELECT v.drive_path_if_builtin, "
"m.full_filepath "
"FROM media_table m "
"INNER JOIN volume_table v "
"ON (v.id = m.volume_id) "
"WHERE m.id = %1;").arg(id);
... 然后在适当的地方,我需要一个 c 字符串,我使用 qPrintable(sql)
.