在单独的函数

时间:2017-10-17 06:37:21

标签: c++ getline

我需要解析一个.csv文件,其中行之间的分隔符是' \ n',但是如果它被包装,任何值都可以包含任意数量的' \ n'到" &#34 ;. 所以我写了这个函数,当我把它放到main时它实际上有效,但是当它与main分离时不会改变任何变量。

void getWholeValue(ifstream &ip, string l) {
getline(ip, l, ',');
if (l[0] == '"') {
    string s;
    getline(ip, s, '"');
    l = (l + s);
}}

以下是我如何调用该函数的示例:

struct Line {string customer;};
    int main(){
    Line *l = new Line;
    while (ip.good())
           {getWholeValue(ip, l->customer);
           }
    delete l;
}

那么当我像这样调用getline时会发生什么?指针有问题吗?也许有更准确的方法来得到我想要的东西? 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

为了使您的函数正确地更改参数l的值,您需要将参数设置为std::string &,以便通过引用传递变量,因此更改传递的原始变量而不是创建的临时变量在函数范围内。只需更改getWholeValue(ifstream &ip, string l)

即可

标题为:  getWholeValue(ifstream &ip, string &l)