encontré el ++ siguiente código C (comentarios añadidos a mí mismo):Traducción C++ string.Format s
// frame_name is a char array
// prefix is std::string
// k is a for loop counter
// frames is a std::vector string
sprintf(frameName, "%s_%0*s.bmp", prefix.c_str(), k, frames[k].c_str());
entonces trato de traducirlo a C#
// prefix is string
// k is a for loop counter
// frames is List<string>
string frameName = string.Format("{0}_(what goes in here?).bmp", prefix, k, frames[k]);
Básicamente, lo sería el equivalente de C# de la cadena de formato C++ "% s_% 0 * s.bmp"?
Editar, Byers @ Marcos:
he intentado su código e hizo un pequeño programa de prueba:
static void Main(string[] args)
{
List<string> frames = new List<string>();
frames.Add("blah");
frames.Add("cool");
frames.Add("fsdt");
string prefix = "prefix";
int n = 2;
int k = 0;
string frameName = string.Format("{0}_{1}.bmp", prefix, frames[k].PadLeft(n, '0'));
Console.WriteLine(frameName); // outputs prefix_blah.bmp, should output prefix_00blah.bmp
Console.ReadLine();
}
No es acolchado por alguna razón.
Editar: Lo tengo trabajando; no cojín si n = 2.
¿Estás seguro de que deseas reutilizar 'k' para dos propósitos diferentes? –
¿Estás seguro de esas cadenas de formato? Específicamente: '% 0 * s' - el modificador' 0' en conjunción con la conversión 's' es, de acuerdo con la página del manual aquí, un comportamiento indefinido. – Thanatos
Eso es lo que me dieron cuando miraba un programa de código abierto. – thebackup