我有一個二進制文件,我正在閱讀。在一個文件中,有一個已知數量的字節組成一個簡單的ASCII字符串(可能帶有換行符)。現在,我有:C++:從std :: string(&str [0])作爲緩衝區安全讀取文件?
void doSomething(istream &in) {
vector<char> buf(length + 1, '\0');
in.read(&buf[0], length);
string str(&buf[0]);
}
但我意識到,它可能會更快地做到
void doSomething(istream &in) {
string str(length + 1, '\0'); // +1 needed?
in.read(&str[0], length);
}
我試圖尋找的標準,看是否字符串分配始終是連續的,或者如果它是安全做的事情喜歡這個。安全含義,不會意外讀入(寫入)內存而不是字符串的一部分。有人知道嗎?
請定義_safe_更清楚。 「長度」從哪裏來?它是如何計算的? –
長度來自文件,並且表示作爲字符串一部分的「已知字節數」(如上所述)。 – bombax
重複這個? https://stackoverflow.com/q/25169915/241631 – Praetorian