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

前端之家收集整理的这篇文章主要介绍了C:我如何创建一个接受连接字符串作为参数的函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可以用某种方式设计我的日志记录功能,它使用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&C++相关文章