Sto leggendo le stringhe da una struttura in un file in cui ogni stringa ha una lunghezza fissa, con padding '\0'
. Non sono terminati a zero se la stringa memorizzata richiede l'intera lunghezza.Costruisci std :: string da un massimo di X caratteri, fermandosi al char nullo
Attualmente sto costruendo std::string
s su quelli come questo:
// char MyString[1000];
std::string stdmystring(MyString, ARRAYSIZE(MyString));
Tuttavia, questa copia l'imbottitura, anche. Potrei tagliare la stringa ora, ma c'è un modo elegante e veloce per prevenire la copia in primo luogo?
La velocità è più importante dello spazio, poiché viene eseguito in un ciclo.
È possibile utilizzare lo strnlen POSIX per determinare la dimensione. (Si dovrebbe fare qualcosa del genere, altrimenti string :: size() è sempre la dimensione dell'array) –
Vero, sicuramente un'ottimizzazione. Userò questo se nessuno si presenta come farlo senza un secondo ciclo per determinare la dimensione (che era ciò a cui pensavo ...). –