奇怪的是,我的代碼編譯與mingw編譯器很好,但作爲Im我的項目轉移到Visual Studio Express我無法運行/調試我的代碼到目前爲止沒有這個錯誤警告框彈出:http://imgur.com/0vr10noMSVS Express警告:'調試斷言失敗,字符串下標超出範圍'
它說錯誤是在MSVCP120D.dll的行1685,這完全讓我感到困惑。這是我在項目中實現的最新代碼,導致警告錯誤開始彈出。
SYA::SYA(std::string p_input) {
std::vector<std::string> infix = inputToInfix(p_input);
for (std::size_t i = 0; i < infix.size(); i++)
std::cout << infix[i] << "\n";
}
std::vector<std::string> SYA::inputToInfix(std::string p_input) {
std::vector<std::string> infix;
std::size_t prevPos = 0, pos = 0;
while (pos != std::string::npos) {
pos = p_input.find_first_of("+-*/%^", prevPos);
if (pos > prevPos)
infix.push_back(p_input.substr(prevPos, pos - prevPos));
infix.push_back(std::string(1, p_input[pos]));
prevPos = pos + 1;
}
return infix;
}
我雙重檢查我的代碼,並且我確定我不是犯了一個錯誤與迭代器和走出去的一個字符串的範圍,其怪我錯誤說它在MSVCP120D.dll的第1685行,並且我在使用mingw之前對相同的代碼沒有問題。任何人都可以給我一些見解嗎?我怎樣才能讓這個錯誤停止?
_'I我重複檢查了我的代碼...'_使用調試器並逐步通過? –
由於'p_input.find_first_of(「+ - * /%^」,prevPos),'pos'可能會變成'-1';'不? –
我使用了提供的調試器並嘗試破譯這些錯誤,但是正如你可能會告訴我不是C++/Visual Studio中最有經驗的人,所以我不能從中獲益太多。我在做什麼,我已經廣泛搜索,但只發現了類似的錯誤消息,不適用於我。 – user3760908