gpt4 book ai didi

C++:如何创建一个接受连接字符串作为参数的函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:55 24 4
gpt4 key购买 nike

我能否以某种方式设计我的日志记录函数,使其接受使用 C++ 的以下形式的串联字符串?

int i = 1;
customLoggFunction("My Integer i = " << i << ".");

.

customLoggFunction( [...] ){
[...]
std::cout << "Debug Message: " << myLoggMessage << std::endl << std::endl
}

编辑:

使用 std::string 作为函数的属性适用于连接字符串,但随后传递的非连接字符串如 customLoggFunction("example string") 会产生编译时错误,指出该函数不适用于 char [].当我以下列方式重载函数时...

customLoggFunction(std::string message){...}
customLoggFunction(char message[]){...}

...连接的字符串开始工作。

我上传了代码:http://coliru.stacked-crooked.com/a/d64dc90add3e59ed

最佳答案

除非求助于宏,否则不可能使用您要求的确切语法。

但是如果你不介意替换 <<, , 那么您可以执行以下操作:

#include <iostream>
#include <string>
#include <sstream>

void log_impl(const std::string &str)
{
std::cout << str;
}

template <typename ...P> void log(const P &... params)
{
std::stringstream stream;

(stream << ... << params);
// If you don't have C++17, use following instead of the above line:
// using dummy_array = int[];
// dummy_array{(void(stream << params), 0)..., 0};

log_impl(stream.str());
}

int main()
{
log("1", 2, '3'); // prints 123
}

关于C++:如何创建一个接受连接字符串作为参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776877/

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