I’ve got a bit of a problem. Essentially, I need to store a large list of whitelisted entries inside my program, and I’d like to include such a list directly — I don’t want to have to distribute other libraries and such, and I don’t want to embed the strings into a Win32 resource, for a bunch of reasons I don’t want to go into right now.
I simply included my big whitelist in my .cpp file, and was presented with this error:
1>ServicesWhitelist.cpp(2807): fatal error C1091: compiler limit: string exceeds 65535 bytes in length
The string itself is about twice this allowed limit by VC++. What’s the best way to include such a large literal in a program?
EDIT:
I’m storing the string like this:
const std::wstring servicesWhitelist
(
L".NETFRAMEWORK|"
L"_IOMEGA_ACTIVE_DISK_SERVICE_|"
L"{6080A529-897E-4629-A488-ABA0C29B635E}|"
L"{834170A7-AF3B-4D34-A757-E05EB29EE96D}|"
L"{85CCB53B-23D8-4E73-B1B7-9DDB71827D9B}|"
L"{95808DC4-FA4A-4C74-92FE-5B863F82066B}|"
L"{A7447300-8075-4B0D-83F1-3D75C8EBC623}|"
L"{D31A0762-0CEB-444E-ACFF-B049A1F6FE91}|"
L"{E2B953A6-195A-44F9-9BA3-3D5F4E32BB55}|"
L"{EDA5F5D3-9E0F-4F4D-8A13-1D1CF469C9CC}|"
L"2WIREPCP|"
//About 3800 more lines
);
EDIT2
It’s used at runtime in a way similar to this:
static const boost::wregex servicesWhitelistRegex(servicesWhitelist);
std::wstring service;
//code to populate service
if (!boost::regex_match(service, servicesWhitelistRegex))
//Do something to print service
How about an array? (you would put the commas only after the legal limit for every element)
You could use the below statement to get the combined string.