Ho un po 'di problemi. Essenzialmente, ho bisogno di memorizzare una grande lista di voci autorizzate all'interno del mio programma, e mi piacerebbe includere direttamente un elenco di questo tipo - Non voglio dover distribuire altre librerie e simili, e non voglio incorporare le stringhe in una risorsa Win32, per un sacco di motivi per cui non voglio entrare in questo momento.Come posso includere letterali estremamente lunghi in sorgente C++?
ho inserito semplicemente il mio grande lista bianca nel mio file cpp, ed è stato presentato con questo errore:
1>ServicesWhitelist.cpp(2807): fatal error C1091: compiler limit: string exceeds 65535 bytes in length
la stringa stessa è circa il doppio di questo limite consentito dalla VC++. Qual è il modo migliore per includere un così grande letterale in un programma?
EDIT:
sto memorizzare la stringa in questo modo:
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 E 'utilizzato in fase di esecuzione in un modo simile a questo:
static const boost::wregex servicesWhitelistRegex(servicesWhitelist);
std::wstring service;
//code to populate service
if (!boost::regex_match(service, servicesWhitelistRegex))
//Do something to print service
Come stai Memorizzazione della stringa? Come, è analizzato e memorizzato in un set? – GManNickG
@GMan: Vedi domanda modifica –
C'è qualche ragione per cui deve essere memorizzato esattamente in questo formato? Mi sembra che potrebbe essere meglio memorizzato in un 'elenco <>' o qualcosa del genere. – greyfade