本质上,你将一个正在增长的字符串插入本身,覆盖越来越多的字符范围。我认为你一次只想替换一个角色。
尝试将replace()的length参数设置为1,并且只指定temp变量的第一个字符。例如:
for (int i = 0; i < size /2; i++)
{
string tempvar1 = userentry.substr(i);
string tempvar2 = userentry.substr(size - 1 - i);
userentry.replace(i, 1, tempvar2.substr(0, 1));
userentry.replace(size - 1 -i, 1, tempvar1.substr(0, 1));
}
这里的结果显示你的成长串插入:
enter a string: abcdef
Step 1
t1: abcdef
t2: f
ue: abcdef
first replace at 0, length 1 on data: abcdef, using: f
second replace at 5, length 6 on data: fbcdef, using: abcdef
Step 2
t1: bcdeabcdef
t2: eabcdef
ue: fbcdeabcdef
first replace at 1, length 2 on data: fbcdeabcdef, using: eabcdef
second replace at 4, length 5 on data: feabcdefcdeabcdef, using: bcdeabcdef
Step 3
t1: abbcdeabcdefdeabcdef
t2: bbcdeabcdefdeabcdef
ue: feabbcdeabcdefdeabcdef
first replace at 2, length 3 on data: feabbcdeabcdefdeabcdef, using: bbcdeabcdefdeabcdef
second replace at 3, length 4 on data: febbcdeabcdefdeabcdefbbcdeabcdefdeabcdef, using: abbcdeabcdefdeabcdef
results: febabbcdeabcdefdeabcdefabcdefdeabcdefbbcdeabcdefdeabcdef
来源
2013-11-27 06:39:26
bvj
描述你所相信的每一行呢。如果程序没有做到你认为的那样,那么其中一个描述是错误的。遍历调试器中的代码并验证每个描述符合实际行为;那个不是bug。 –
@Blastfurnace:练习的目的不是要学习如何调用别人的字符串反向算法。我怀疑原始海报有迫切需要扭转一个字符串。 –
如果我们坚持您在描述问题时提供的详细程度(“不起作用”),我们将不得不回答,“因为您显然在某处犯了一个错误”... – Spook