我需要解析一个.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时会发生什么?指针有问题吗?也许有更准确的方法来得到我想要的东西? 提前感谢您的帮助。
答案 0 :(得分:0)
为了使您的函数正确地更改参数l的值,您需要将参数设置为std::string &
,以便通过引用传递变量,因此更改传递的原始变量而不是创建的临时变量在函数范围内。只需更改getWholeValue(ifstream &ip, string l)
标题为:
getWholeValue(ifstream &ip, string &l)