Reading fixed-width data fields in .NET
I don't know if something does that already, but you could mimic StructLayout if you need to read multiple types of 'objects' or need reusability.

Basically just set starting point/offset and length for each property and read them.

public class Item
{
     // 3 chars starting from 0
    [Layout(0, 3)]
    public int Number { get; set; }

     // 15 chars starting from 3
    [Layout(3, 15)]
    public string Text { get; set; } 

    // 5 chars starting from 18
    [Layout(18, 5)]
    public float Number2 { get; set; } 
}

reader.Read&lt;Item&gt;()