-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