在进行了详尽的谷歌搜索并访问了许多论坛之后,我还没有为这个问题找到一个好的全面答案。很多论坛建议使用 get 行
istream& getline (char* s, streamsize n)
函数。我的问题是,如果我不知道每行的长度是多少并且无法预测大小可能是什么?还有它在 C 中的等价物是什么?
c/c++ 中是否有任何特定函数可以每次从文本文件中读取一行?
解释,代码片段对我有很大帮助。
最佳答案
在 C++ 中,您可以使用全局函数 std::getline,它接受一个字符串和一个流以及一个可选的分隔符并读取 1 行,直到达到指定的分隔符。一个例子:
#include <string>
#include <iostream>
#include <fstream>
int main() {
std::ifstream input("filename.txt");
std::string line;
while( std::getline( input, line ) ) {
std::cout<<line<<'\n';
}
return 0;
}
此程序从文件中读取每一行并将其回显到控制台。
对于 C,您可能正在考虑使用 fgets
,我已经有一段时间没有使用 C,这意味着我有点生疏,但我相信您可以使用它来模拟功能上面的 C++ 程序是这样的:
#include <stdio.h>
int main() {
char line[1024];
FILE *fp = fopen("filename.txt","r");
//Checks if file is empty
if( fp == NULL ) {
return 1;
}
while( fgets(line,1024,fp) ) {
printf("%s\n",line);
}
return 0;
}
限制是该行不能超过您正在读取的缓冲区的最大长度。
关于c++ - 如何从 C/C++ 中的文本文件中读取一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3081289/