-3
我正在编写一个C++程序来尝试模拟批处理脚本。目前我正试图实现一个可变系统。我将系统设置为每当用户创建一个新变量时,都会将其添加到变量的名称,逗号和值中。我有一些算法设置为按分隔符(逗号)拆分字符串,并返回一个向量,第一个条目是名称,第二个是值。使用这些算法打印名称时,变量的名称已成功打印(在本例中为“测试”)。然而,试图在线性搜索算法中使用这个相同的变量,变量是“test,123”而不是“test”。以下是导致此错误的代码。根据调用它的函数,变量具有不同的值
std::string hugeStr=std::string(strSplitter(std::string(removeChar(std::string(splitCommand[1]), '\%')), ",")[0]);
std::cout<<hugeStr<<std::endl<<std::endl;
int result=linearSearch(varVector, varVector.size(), hugeStr);
std::cout<<result<<std::endl;
以下是搜索算法。
int linearSearch(std::vector<std::string> myVec, int size, std::string searchKey)
{
for(int i=0; i<size; i++)
{
if(searchKey==std::string(myVec[i]))
return i;
else{
std::cout<<myVec[i]<<std::endl;
return -1;
}
}
}
当用户初始化变量(在这种情况下,用“测试”的名称,以及“123”的值)时,第一COUT语句打印“测试”。但是,线性搜索算法中的cout
语句将打印“test,123”并返回-1。为什么变量在传递给搜索算法时有不同的值?
如果需要,可以在github repo找到代码的完整副本。
什么在与所有'std :: string(...)'临时进行? –
看看'std :: map'。或'std :: unordered_map'。或者至少是'std :: pair'。 – rici