Что такое C # аналог C snprintf ()? - PullRequest
1 голос
/ 25 июля 2010

Что такое C # аналог C snprintf ()?

В C-коде мы используем

 snprintf(buf, sizeof(buf), outfilename, frame);

Что может быть его точным аналогом?

Ответы [ 4 ]

4 голосов
/ 25 июля 2010

StringBuilder.AppendFormat String.Format является ближайшим.Он выполняет ту же операцию, но учтите, что строки формата в другом формате .

Использование String.Format:

string buf = string.Format("{0}", frame);

Использование StringBuilder.AppendFormat:

StringBuilder builder = new StringBuilder();
builder.AppendFormat("{0}", frame);
3 голосов
/ 25 июля 2010

Самая базовая версия: String.Format.

string result = String.Format(format, arg0, arg1, ..., argn);

Но многие другие классы поддерживают нечто подобное, в том числе все классы, производные от TextWriter. В этом вопросе есть несколько примеров Какие методы в рамках 3.5 имеют сигнатуру типа String.Format?

  • Console.Write
  • StreamWriter.Write
  • StringWriter.Write
  • StringBuilder.AppendFormat
  • много больше ...
0 голосов
/ 25 июля 2010

Каким может быть его точный аналог?

Точного аналога нет, потому что:

  1. строки в C и C # реализованы по-разному,В C строки - это изменяемые массивы символов, а в .NET - экземпляры неизменяемых объектов.Поэтому в .NET вы не «записываете в буфер», как это делает snprintf, вы просто создаете новую строку

  2. строки форматирования, используемые в .NET (в String.Format, Console.WriteLine и т. Д.) Сильно отличаются от C (другой формат заполнителя)

Как упоминалось в других ответах, ближайший эквивалент - String.Format, но он определенно не является точныманалоговый * * 1 021

0 голосов
/ 25 июля 2010

Если вы присваиваете строку, используйте String.Format

var newString = String.Format("Number: {0}", 10);

Если вы хотите добавить тонну строк, используйте StringBuilder.AppendFormat. Это спасет вас в долгосрочной перспективе, потому что они могут быть объединены в цепочку, экономя место.

var result = new StringBuilder().AppendFormat("{0}", 10).AppendFormat("{0}", 11).ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...