当我试图连接两个字符串时,第二个字符串替换了第一个字符串的第一个字母。字符串串联取代了前几个字符
我使用getline函数从文件中获取输入,正则表达式在行中挑选9位数字的“UIN”,并尝试将另一个字符串追加到原始完整行上。例如:
string line;
ifstream in(infile);
ofstream out("output.csv");
getline(in, line);
regex pat("(\\d{9})");
smatch matches;
if(regex_search(line, matches, pat))
{
line += ",65";
cout<<line<<endl;
out<<line<<endl;
}
(当然Im做其他的事情在此声明,但没有对串线经营,所以我离开它了)
原线
Alfonso Livingston,[email protected],800000092
,返回是
,65onso Livingston,[email protected],800000092
我看到this link,并试图创造新的字符串即(?)(line += string(",65")
),但它都以相同的结果结束。我也尝试使用append函数和push_back函数。任何帮助将非常感激!
编辑:
这是我的全部功能。输入来自逗号分隔值列表input.csv。我真的不能复制这个功能,所以我不知道我能否给出一个完整的可验证的例子。
void combine(string infile)
{
ifstream in(infile);
ofstream out("output.csv");
int size = getSize(infile);
int hashVal;
string line;
string listVals;
getline(in, line);
regex pat("(\\d{9})");
smatch matches;
if(regex_search(line, matches, pat))
{
hashVal = hash(stoi(matches[0]));
listVals = table[hashVal].getFirst()->getElem();
line += ",65";
cout<<line<<endl;
out<<line<<endl;
}
}
这不是整个完成的功能所要做的,但它是我不得不停下来弄清楚这个问题的地方。
正则表达式与您所描述的问题无关。你为什么包括它(或标签)?你不是使用正则表达式连接,你不是用正则表达式提取任何东西;在这个问题中没有任何与正则表达式相关的东西,除了你在'if'中使用它。 –
[我无法复制它](http://ideone.com/6FNjsy)。你需要给我们更多的细节,最好是[最小,完整和可验证的例子](http://stackoverflow.com/help/mcve)。 –
这是我第一次使用正则表达式,所以我不确定在正则表达式搜索中是否可能导致它。如果确实不是问题,我可以删除标记 – user7497136