c++——读取txt文本getline(),string.substr(pos1,pos2)

std::ifstream gpsFile;
gpsFile.open(txt_name, std::ifstream::in); //gParams->cntrlParams.offlineRoute
if (gpsFile.is_open())
{
    while (getline(gpsFile, line,'\n'))
{
//do sometning;
}

一、

getline()的原型是

istream& getline ( istream &is , string &str , char delim );

返回类型是

输入流类型

参数:

 istream &is 表示一个输入流,譬如cin;
string&str表示把从输入流读入的字符串存放在这个字符串中
char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为'\n',也就是回车换行符(遇到回车停止读入)

while(getline(cin,line))的终止条件是,返回-1,也就是说EOF

eof()判断的是文件中所有的字符包括回车,只有当文件中什么字符都没有了,才会返回-1,到达文件的末尾

二、

原型:

 basic_string
      substr(size_type __pos = 0, size_type __n = npos) const
      { return basic_string(*this,
			    _M_check(__pos, "basic_string::substr"), __n); }

1 用途:一种构造string的方法;

2. 形式:s.substr(pos, n)

3. 解释:返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s)

4. 补充:若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾。(注意:npos代表-1)

///  Value returned by various member functions when they fail.
      static const size_type	npos = static_cast(-1);

 

参考:

使用getline与ifstream:https://blog.csdn.net/ruixj/article/details/4702096

 

 

 

你可能感兴趣的:(C++)