Se stai utilizzando C++ dovresti usare la classe std::string invece che gli array di caratteri. Comunque è difficile capire dove sbagli senza vedere il codice, non ho niente da correggere. ZeroMemory non è nemmeno nello standard C++, è roba che c'è solo nelle Windows API e ti sconsiglio di usarla.
Una zona in memoria, quando non è inizializzata, contiene dei valori non ben definiti. Immagino che l'aria di memoria in cui stai copiando il contenuto non sia inizializzata e per questo motivo contiene "roba a caso" (che tu vedi come 0xCC, ma in circostanze diverse potrebbe essere anche un altro valore).
Ti propongo una cosa di questo tipo:
Gli passi un file (
Una zona in memoria, quando non è inizializzata, contiene dei valori non ben definiti. Immagino che l'aria di memoria in cui stai copiando il contenuto non sia inizializzata e per questo motivo contiene "roba a caso" (che tu vedi come 0xCC, ma in circostanze diverse potrebbe essere anche un altro valore).
Ti propongo una cosa di questo tipo:
C++:
std::string trim(std::string_view str) {
static constexpr auto whitespace = " \n\r\t\f\v";
str.remove_prefix(str.find_first_not_of(whitespace));
str.remove_suffix(str.size() - str.find_last_not_of(whitespace) - 1);
return std::string(str);
}
std::unordered_map<std::string, std::string> parse(std::istream &stream, char delim = ':') {
std::unordered_map<std::string, std::string> map;
for (std::string line; std::getline(stream, line);) {
auto view = std::string_view(line);
if (auto sep = view.find_first_of(delim); sep != std::string::npos)
map.insert_or_assign(trim(view.substr(0, sep)), trim(view.substr(sep + 1)));
}
return map;
}
std::ifstream
) e ti restituisce un dizionario in cui map["parametro1"]
vale "123"
e così via per ogni parametro presente nel file. Rimuove gli spazi in testa e in coda e ignora le linee che non contengono il separatore :
.