Boş olmayan sonlandırma dizelerini döndüren bazı eski işlevler var.Boş olmayan sonlandırıcı c dizesini c dizgisini sonlandırmaya dönüştürmenin en temiz yolu
struct legacy {
char a[4]; //not null terminated
char b[20]; //not null terminated
};
Bu char dizileri çok geziyorum ve sıfır sonlandırmaya dönüştürmek için temiz bir yola ihtiyacım var. şu anda bu tarihi itibariyle
ne yaptığımı geçerli:
legacy foo;
std::string a(foo.a, sizeof(foo.a));
std::string b(foo.b, sizeof(foo.b));
bar(foo.a.c_str(), foo.b.c_str());
Ben böyle bir şey için bu kodu azaltmak için sınıflar ve şablonlar kullanabilirsiniz daha temiz bir yolu var mı ...
legacy foo;
bar(make_null_terminated(foo.a), make_null_terminated(foo.b));
mu geçici dizeleri yok 'bar()' sadece 'const char *' almak? Onlara tutun mu yoksa ntbs'lerin ömrü, 'bar() 'aramasını geçmemeli mi? – Barry
@Barry bar sadece bir 'const char * 'alır – andre
Başka bir şey almak için değiştirebilir misiniz yoksa kontrolünüz dışında mı? – Barry