當我試圖連接兩個字符串時,第二個字符串替換了第一個字符串的第一個字母。字符串串聯取代了前幾個字符
我使用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