我试图使用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("%ld\n", data.gcount());
data.get(n2, 3);
printf("%ld\n", data.gcount());
//read newline
data.get(&ch, 2);
printf("%ld\n", data.gcount());
printf("n1= %s, n2 = %s\n", n1, n2+1);
}
输出:
0
0
0
n1= 1234, n2 = 56
0
0
0
n1= 1234, n2 = 56
0
0
0
n1= 1234, n2 = 56
我无法理解这一点。
答案 0 :(得分:0)
这里有一个问题:
data.get(&ch, 2);
假设您之前已将ch
定义为
char ch;
换行符将存储在ch
中,但会在'\0'
之后的下一个地址写入终止ch
,从而破坏驻留在那里的任何变量。
将其更改为:
char ch[2];
data.get(ch, 2);
答案 1 :(得分:0)
get(char *,streamsize)在遇到换行符分隔符后立即卡住。 你需要使用getline()前进到下一行。
另外,你的第二个get()只能从流中读取2个字符(即你将读取&#34;,5&#34;而不是&#34;,56&#34;为你的第一行。