我正在尝试编写一个函数,它接受任意数量的参数格式化并将其打印到控制台。我希望函数具有以下签名
void formatted_text(...);
我希望以下列方式调用此函数。
formatted_text("String 1", 1, "String 2", 2.2);
现在的问题是,在函数中我不知道哪个参数是哪种数据类型。一种解决方案是我可以要求用户将所有参数转换为字符串,然后像这样将其传递给函数
formatted_text("String 1", "1", "String 2", "2.2");
但是使用起来不是很方便。我可以做的另一件事是要求用户为每个参数提供数据类型,这又不是一个很好的解决方案。
有没有办法在不知道数据类型的情况下将任何数据类型转换为字符串。我知道答案......,但你可能知道一些我不知道的事情。
处理这种需求之王的最佳方法是什么。
最佳答案
C 数据类型本质上不是自描述的,就像它们通常在其他语言(如 Java、Python、PHP 等)中一样。您必须提供一些元数据,以便 formatted_text(.. .)
可以知道如何解释你在堆栈上传递给它的字节。正如评论中提到的,您传递给 printf
的格式字符串(即第一个参数)是元数据可以采用的一种形式。
关于c - 如何在 C 中将任何数据类型转换为字符串(不知道它的类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14638298/