- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有以下 C++ 程序并在 Windows 7 上使用 Visual Studio 2008 运行它。我获取然后取消获取一个字符。这样做之后,文件位置就不同了。为什么?我该如何解决这个问题?
test.txt(如果需要可以在下方下载)
/* Comment 1 */
/* Comment 2 */
#include <fstream>
int main (int argc, char ** argv) {
char const * file = "test.txt";
std::fstream fs(file, std::ios::in);
std::streampos const before = fs.tellg();
// replacing the following two lines with
// char c = fs.peek(); results in the same problem
char const c = fs.get();
fs.unget();
std::streampos const after = fs.tellg();
fs.seekg(after);
char const c2 = fs.get();
fs.close();
return 0;
}
c: 47 '/' char
c2: -1 'ÿ' char
before: {_Myoff=0 _Fpos=0 _Mystate=0 } std::fpos<int>
after: {_Myoff=0 _Fpos=-3 _Mystate=0 } std::fpos<int>
添加| std::fstream::binary
到构造函数似乎解决了这个问题。也许它与文件中的换行符有关?如果是这样,为什么它会影响甚至无法读取换行符的代码?
更新为寻找后面的位置并获得另一个角色。
似乎通过记事本与 Vim 保存有所不同。通过记事本保存可以使流正常工作。
如果你想dl,我已经把文件上传到google docs了:
最佳答案
好的,使用您的输入文件,我看到了与您相同的行为。经过一些实验,该文件看起来像是 Unix 格式,然后编辑掉了 ^M 字符(至少我是这样重现它的)。
为了修复它,我在 Vim 中编辑文件,执行“:set ff=dos”,然后添加和删除一个字符来弄脏文件,然后保存它。
关于C++ 流得到 unget 不是 nop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7893949/
假设input.txt是一个1字节的文本文件: std::ifstream fin("input.txt", std::ios::in); fin.get(); // 1st
我正在二进制文件中寻找一个 2 字节序列,该序列太大而无法放入内存。我不能一次简单地读取 2 个字节,因为,例如 xx xx x1 2x xx 同样,我不能简单地查找第一个,然后查看第二个是否存在,因
我正在从 ifstream 中读取字符,如果这些字符不符合特定条件,那么我将 unget() 次数等于这些字符。在我到达文件末尾之前,这一切都很好。然后,如果我尝试 unget(),则好的位设置为 0
我有以下 C++ 程序并在 Windows 7 上使用 Visual Studio 2008 运行它。我获取然后取消获取一个字符。这样做之后,文件位置就不同了。为什么?我该如何解决这个问题? test
我正在使用标准 iostream 从文件中获取一些输入,我对 unget() 与 putback(character) 感到困惑。在我看来,这些函数实际上是相同的,其中 unget() 只记得输入的字
unget 并没有像我想象的那样工作……让我自己解释一下。正如我所想,unget 获取流中提取的最后一个字符,并将其放回流中(并准备好再次提取)。在内部,它正在减少流缓冲区中的指针(创建哨兵和所有这些
昨天我在相当简单的代码中发现了一个奇怪的错误,该错误基本上是从 ifstream 获取文本并将其标记化。实际上失败的代码进行了多次 get()/peek() 调用以查找 token “/*”。如果在流
我的 C 程序已从 Linux 上的 TCP 套接字读取(使用 read(2) 或 recv(2))几个字节。是否可以将这些字节推回,以便后续的 read(2) 和 recv(2) 调用(在我无法控制
有人可以澄清我对 cin.unget() 函数的一点困惑吗?请考虑这段代码: void skip_to_int() { if (cin.fail()) {
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
我有一些解析代码允许将转义序列输入到文本字符串中: // In a file or large, multi-line string ... my_parameter="A setting for t
我是一名优秀的程序员,十分优秀!