3.C++逐行读取txt文件数据,利用getline -zobol的windows编程教程
最终效果:
:
1.getline函数声明
getline函数实际上是在两个模块都有实现,一个是string一个是istream,它们的用处都是一样的,只是输入的参数不太一样。一个是char*一个是string。
std::istream::getline:
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
std::getline (string):
istream& getline (istream& is, string& str);
istream& getline (istream& is, string& str, char delim);
2.使用方法:
第一个std::istream::getline的使用,就是cin或者ifstream,调用成员函数的形式,cin.getline:
第1个参数s是承接的字符数组,大小必须大于等于获得的数据长度。
第2个参数n,是s的最大长度,因为char*是得不到数组长度的,必须额外给出,防止内存访问越界、
char name[256];
std::cin.getline(name, 256);
第二个std::getline (string),类似公共函数了,流的输入也放到了参数列表中,因为string内部有动态长度设计,就不用额外给出了。
std::getline (std::cin,name);
char delim就是定界符号,默认是‘/n’换行符,也可以自己指定。getline会返回从起始,到定界符前的数据(不包括定界符本身,但流会经过定界符,相当于光标跳到定界符后面)。
C++逐行读取txt文件源码:
#include <string>
#include <fstream>
#include <vector>
int main() {
std::ifstream infile("zobol.txt");
std::string line;
std::vector<std::string> vectorLines;
while (getline(infile, line))
{
vectorLines.push_back(line);
}
return 0;
}
效果: