St. Charles is a town in Lee County, Virginia, United States. The population was 128 at the 2010 census,[1] down from 159 at the 2000 census.