如何在c ++中的getline()函数中使用string作为分隔符

时间:2017-12-07 14:07:08

标签: c++

我有结构成员从XML获取分隔符的值。我想使用该结构成员作为分隔符。但由于getline()函数仅将分隔符作为字符,因此我的“I”已停留在那里。

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

我在代码中做了以下事情: -

string ABC = struct.delimiter;    // Here struct.delimiter is takes value of
                                     d delimiter from XML delimiter = '='  

我希望用作

getline(string1,string2, ABC);

有可能吗? 要么 还有其他办法吗?

2 个答案:

答案 0 :(得分:0)

使用getLine无法实现这一点,我知道这样做的最好方法是获取行,将其存储在字符串中并使用find()函数查找分隔符。

string string; // Your line
string ABC = struct.delimiter; // Delimited
getline(input, string); // Get line from stream - Thx Kevin
string subStr = str.substr(0, str.find(ABC)); // this will get you the first segment

从这里开始,您可以开发循环以查看读取数据并查找所有段。

答案 1 :(得分:0)

如果ABC保证长度为单个字符,您可以使用ABC[0]从字符串中获取第一个字符:

getline(string1, string2, ABC[0]);

或者只需使ABC成为char即可使保证更加明显。

char ABC = struct.delimiter; // (assuming struct.delimiter is also a char,
                             //  if not use srtuct.delimiter[0])
getline(string1, string2, ABC);