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
,但它絕對不是一個確切的模擬