0
我試圖通過一個給定的字符串用for循環,每個迭代用一個字符從一個矢量[char]替換一個字符。 問題是替換插入整個vector-k而不是在地點k的字符,我無法弄清楚我做錯了什麼。C++:string.replace插入太多字符
任何和所有的幫助表示讚賞。
(字母表是一個常量字符串a-z,FirstWord是給定的字符串)。
vector<char> VectorAlphabet;
for (int i=0; i<alphabet.length(); ++i)
{
VectorAlphabet.push_back(alphabet.at(i));
}
for (int i = 0; i < FirstWord.length(); ++i)
{
for (int k = 0; k < VectorAlphabet.size(); ++k)
{
string TempWord = FirstWord;
TempWord.replace(i, 1, &VectorAlphabet[k]);
if (CheckForValidWord(TempWord, WordSet))
{
if(CheckForDuplicateChain(TempWord, DuplicateWordSet))
{
DuplicateWordSet.insert(TempWord);
stack<string> TempStack = WordStack;
TempStack.push(TempWord);
WordQueue.push(TempStack);
}
}
}
}
e.g TempWord = tempword,然後在第一次迭代TempWord.replace()之後是ABCDE ... zempWord。而不是aempword。在第二個for循環的第二個到最後一個迭代中,它是yzempword。
我錯過了什麼?
'&VectorAlphabet [K]'可能是沒有零終止的C字符串(您要更換由C-串一個字符) – 2015-02-10 23:14:58
但我不明白爲什麼我」 d插入一個完整的字符串,因爲VectorAlphabet中的每個位置都是一個字符,而我只從一個位置插入數據。 – Rikard 2015-02-10 23:21:08
嘗試'TempWord.replace(i,1,1,VectorAlphabet [k]);' – 2015-02-10 23:23:56