在单独的函数中使用 getline()

Using getline() in separate function

我需要解析一个 .csv 文件,其中行之间的分隔符是'\n',但任何值都可以包含任意数量的'\n',如果它被包装成“”。 所以我写了这个函数,当我把它放到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 时到底发生了什么?指针有什么问题吗?也许有更准确的方法来获得我想要的东西? 在此先感谢您的帮助。

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

header 至: getWholeValue(ifstream &ip, string &l)