bol*_*lov 2 c++ stream dynamic-memory-allocation
例如:
// is type: std::istream
// str type: std::string
is >> str;
Run Code Online (Sandbox Code Playgroud)
这如何增长str以适应输入?它逐个字符地读取和调用str.push_back()(或类似的东西)?或者它是否具有在读取输入之前知道输入大小的机制?
我意识到标准很可能没有指定这个细节,但我对常见的实现更感兴趣(例如gcc).
这个问题是好奇心,因为在C中你事先并不知道为字符串分配了多少(当然是C风格的字符向量),但是C++会为你管理.
请注意,这不是关于动态内存的C++管理的问题,而是在将读取输入读入缓冲区/变量之前知道或不知道读取输入的大小.在那个注意事项当然,如果str已经足够大,那么就不会发生重新分配,但这不是重点.