The England and Wales Cricket Board has also given Stokes permission to play in the Indian Premier League, which starts in April.
He posted on Twitter that he was 'keen to have an opportunity' to clear his name.
"I gave a full and detailed account of my actions to the police on day one - the same day as the incident - and have cooperated at each step of the police inquiry," he added.
"The CPS' decision ... at least means that my account of what happened that night can come out in court and be made public."
Stokes was named last week in England's Twenty20 squad for the tri-series against Australia and New Zealand next month but his participation was dependent on whether he was charged.
"ECB is aware that Ben Stokes has been charged with affray in relation to an incident in Bristol in September," an ECB spokesperson said.
"The Board will now convene within 48 hours to decide on Ben Stokes' availability to represent England at this stage.
"A further announcement will be made in due course."
Ben Stokes timeline
25 September β Stokes and teammate Alex Hales are involved in an incident outside a Bristol nightclub which left a man needing hospital treatment for injuries. Stokes is arrested then released under investigation.
27 September β Stokes suffers minor finger fracture on his right hand but is still included in England's 16-man Ashes squad.
27 September β Footage of the brawl, which allegedly shows Stokes throwing punches is released by British newspaper The Sun.
28 September - The ECB announces Stokes and Hales will not be considered for selection for England until further notice.
11 October β Sportswear brand New Balance drops Stokes from sponsorship deal. Stokes apologises to Katie Price for a video that shows him imitating her disabled son.
28 October β England fly to Australia for the Ashes without Stokes.
23 November β Australia beat England in the first Ashes Test in Brisbane.
27 November β The ECB issues a statement denying Stokes is joining England's squad after picture supposedly showing him at Heathrow Airport appears on Twitter.
29 November β Stokes arrives in New Zealand to play for Canterbury Kings.
29 November β Avon & Somerset Police complete their investigation and send their findings to the Crown Prosecution Service.
4 December β It is announced that Hales will avoid facing criminal charges. The ECB announces that Hales is available for selection.
6 December β Stokes is named in England's ODI squad for the five-match series against Australia.
23 December β Stokes returns to England after his spell with Canterbury Kings.
11 January β Stokes is named in England's test squad to face New Zealand.