#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
std::string s("some content");
std::stringstream ss(s, std::ios::in|std::ios::ate);
std::istream& file = ss;
//ss.clear(); Makes no difference...
std::cout << "tellg() pos: " << file.tellg() << std::endl;
return 0;
}
...其输出如下。
tellg()位置:0
这种行为与使用std::ifstream(std::ios::ate)时不同。
- 这种行为是否正确/预期?
- 尽管使用ate打开,是否需要显式地调用seekg(0, std::ios::end)?
- 清除状态不会有任何影响。
- 请注意字符串有内容。
str()
时,我不明白为什么获取指针不能更新字符串缓冲区。您可能需要提交一个更改提案。 - SergeyA