从file中读取,gcount()总是0,即使在几个file.get()之后
reading from file, gcount() is always 0 even after several file.get()
我试图从使用file.get()
的文件中读取,但它似乎被卡在第一行。输入文件如下:
1234,56
7891,01
.......
这是我的代码:
char* n1 = new char[5];
char* n2 = new char[3];
std::ifstream data("input_file");
while (i < 4) {
data.get(n1, 5);
printf("%ldn", data.gcount());
data.get(n2, 3);
printf("%ldn", data.gcount());
//read newline
data.get(&ch, 2);
printf("%ldn", data.gcount());
printf("n1= %s, n2 = %sn", n1, n2+1);
}
输出:0
0
0
n1= 1234, n2 = 56
0
0
0
n1= 1234, n2 = 56
0
0
0
n1= 1234, n2 = 56
我看不懂。
get(char*, streamsize)一旦遇到换行分隔符就会卡住。您需要使用getline()前进到下一行。
另外,您的第二个get()只从流中读取2个字符(即您将在第一行读取",5"而不是",56")。
这里有一个问题:
data.get(&ch, 2);
假设您之前在某处将ch
定义为
char ch;
换行符将存储在ch
中,但终止的' '
将写入ch
之后的下一个地址,损坏碰巧驻留在那里的任何变量。
修改为:
char ch[2];
data.get(ch, 2);
相关文章:
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何返回或护理项目清单基于几个类别
- 我们如何在文本文件中找到C++中的几个单词?
- 关于 std::bitset 构造函数的几个问题?
- 几个 Nt 函数在 Windows 7 x32 上返回STATUS_WAIT_0
- std::stoi 只转换前几个字符
- C++ 通过接口使用从其他几个类继承的类
- 在矢量中使用擦除时双重释放或损坏(快速顶部).如何擦除一个矢量的几个项目知道它们的索引?
- 如何遍历几个每小时一次的根(.root)文件,并将它们组合成更大的每日数据.root文件?
- 我有几个关于参考变量的问题
- 如何将几个变量复制到其他变量
- 如何在新设计中迁移需要几个额外参数的函数
- 多线程.如果我使用信号量,我可以在开始时创建很多线程还是应该只有几个线程?
- 如何在几个空行后打印文件中的输出
- recvfrom 只收到几个数据包,之后它进入等待状态
- 使用 std::vector<std::future<int>> 和 std::async 启动几个线程时中止
- C++ 两个线程,共享几个整数变量
- 在循环中使用字符串流从几个字符串中提取数字
- 从file中读取,gcount()总是0,即使在几个file.get()之后