【发布时间】:2015-07-08 19:50:44
【问题描述】:
string removeNonAlphas(string original)
{
for(int i = 0; i < original.size(); ++i){
if(!(original[i] > 64 && original[i] < 91) &&
!(original[i] > 96 && original[i] < 124)){
original[i] = original[i] - original[i];
}
}
return original;
}
//test1.cpp
string test = "abc abc";
cout << removeNonAlphas(test) << endl; // output = "abcabc"
assert(removeNonAlphas(test) == "abcabc"); // assertion failed
//上面的断言为什么会失败? removeNonAlphas 结果(“abcabc”)与 //rhs "abcabc"
【问题讨论】:
-
你为什么希望
original[i] = original[i] - original[i];删除任何东西? -
正如上面的人所说,他引用的那行只是将索引 i 处的值重新分配为 0(本身 - 本身 = 0)。这不是删除。
-
@user2357112:因为他测试了函数的结果,发现它给出了他期望的结果。问题是测试存在缺陷,新程序员可能不知道这是可能的。