getline如何重载分隔符
时间: 2024-03-04 08:46:57 浏览: 64
在C++中,`getline`函数用于从输入流中读取一行字符串,并将其存储到指定的字符串变量中。默认情况下,`getline`函数使用换行符作为行的分隔符。但是,你可以通过重载`getline`函数来指定其他的分隔符。
下面是一个示例,展示了如何重载`getline`函数以使用自定义的分隔符:
```cpp
#include <iostream>
#include <string>
#include <sstream>
void getline_custom(std::istream& input, std::string& line, char delimiter)
{
std::stringstream ss;
char c;
while (input.get(c))
{
if (c == delimiter)
break;
ss << c;
}
line = ss.str();
}
int main()
{
std::string input = "Hello;World;C++";
std::istringstream iss(input);
std::string token;
while (getline_custom(iss, token, ';'))
{
std::cout << token << std::endl;
}
return 0;
}
```
在上面的示例中,我们定义了一个名为`getline_custom`的函数,它接受一个输入流、一个字符串变量和一个分隔符作为参数。该函数使用一个`std::stringstream`对象来逐个读取字符,并将字符存储到临时的字符串流中,直到遇到指定的分隔符为止。然后,将临时字符串流中的内容赋值给传入的字符串变量。
在`main`函数中,我们使用了一个名为`iss`的`std::istringstream`对象来模拟输入流,并将其初始化为包含分号分隔的字符串。然后,我们使用`getline_custom`函数来逐行读取字符串,并以分号作为分隔符进行分割。每次读取到一个分割后的字符串,我们将其输出到控制台。
阅读全文