C snprintf()的C#模拟是什么?C snprintf()的C#模拟是什么?
snprintf(buf, sizeof(buf), outfilename, frame);
可能是什么它的准确模拟?
C snprintf()的C#模拟是什么?C snprintf()的C#模拟是什么?
snprintf(buf, sizeof(buf), outfilename, frame);
可能是什么它的准确模拟?
StringBuilder.AppendFormat
String.Format
是最接近的。它执行相同的操作,但请注意格式字符串是in a different format。
使用String.Format
:
string buf = string.Format("{0}", frame);
使用StringBuilder.AppendFormat
:
StringBuilder builder = new StringBuilder();
builder.AppendFormat("{0}", frame);
最基本的版本是String.Format
。
string result = String.Format(format, arg0, arg1, ..., argn);
但许多其他类支持类似的东西,包括从TextWriter
派生的所有类。有一些例子在这个问题Which methods in the 3.5 framework have a String.Format-like signature?
Console.Write
StreamWriter.Write
StringWriter.Write
StringBuilder.AppendFormat
如果你分配一个字符串,使用String.Format
var newString = String.Format("Number: {0}", 10);
如果您要追加大量字符串,请使用StringBuilder.AppendFormat。从长远来看,它可以节省您的时间,因为它们可以链接在一起,节省空间。
var result = new StringBuilder().AppendFormat("{0}", 10).AppendFormat("{0}", 11).ToString();
可能是什么它的准确模拟?
目前还没有确切的模拟,这是因为:在C和C#
字符串不同的方式实现。在C中,字符串是可变的字符数组,而在.NET中它们是不可变的对象实例。因此,在.NET你不“写入缓冲区”为snprintf
做,你只需要创建一个全新的字符串
在.NET中使用的格式字符串(在String.Format
,Console.WriteLine
等)是由C很大的不同(不同的占位符格式)
正如在其他的答案中提到,最接近的等效是String.Format
,但它绝对不是一个确切的模拟