我正在使用ssize_t getline(char **lineptr, size_t *n, FILE *stream)
逐行读取配置文件。但它继续返回凌乱的代码,而这个循环永远不会结束。
以下是代码片段:
char line[MAX_LINE];
size_t max_line = MAX_LINE;
while (-1 != getline((char **)&line, &max_line, file)) {
cout<<"> "<<line<<endl;
lines.push_back(string(line));
}
输出:
> `7▒▒
> `7▒▒
> `7▒▒
我读了这个男人页并跟着它。我不知道我做错了什么。请帮忙!
答案 0 :(得分:0)
也许您想使用std::getline?
#include <string>
#include <list>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream file("input.txt");
list<string> lines;
string line;
while (getline(file, lie)) {
cout << "> " << line << endl;
lines.push_back(line);
}
}
如果您想使用getline from linux,那么它应该是这样的:
#define _GNU_SOURCE
#include <stdio.h>
#include <string>
#include <list>
using namespace std;
int main()
{
FILE* file = fopen("input.txt");
list<string> lines;
char *line = NULL;
size_t len = 0;
ssize_t nread;
while ((nread = getline(&line, &len, file)) != -1) {
cout << "> " << line << endl;
lines.push_back(string(line, nread));
}
free(line);
fclose(stream);
}