gpt4 book ai didi

C++ vector 内存访问问题

转载 作者:行者123 更新时间:2023-11-28 02:54:51 25 4
gpt4 key购买 nike

我有一个带有命令列表的 vector ,如下所示:

//COMMAND INITIALISATION
std::vector<std::string> objectInitialisationAction;
objectInitialisationAction.push_back("CREATE"); //0
objectInitialisationAction.push_back("END_CREATE"); //1
objectInitialisationAction.push_back("START_TIMELINE"); //2

我只使用下面显示的函数访问这个 vector :

int SearchFor(std::string search, std::vector<std::string> from)
{
int result=-1;
for(int i=0; i<from.size(); i++)
if(from[i]==search)
{
result=i;
break;
}
if(result == -1)
{
std::ofstream error("searching.txt");
error<<"search failed, original value = \""<<search<<"\""<<std::endl;
error<<"values in the table:"<<std::endl;
for(int i=0; i<from.size();i++)
error<<"value "<<i<<": "<<from[i]<<std::endl;
error.close();
}

return result;
}

只有一个函数调用:

commandNum=SearchFor(command[0], objectInitialisationAction);

这是我访问 vector 的唯一地方,但是当我第 n 次调用该函数时(它总是在代码中的同一点停止)它访问错误并输出乱码。我在下面列出的一些代码:

    search failed, original value = "CREATE"
values in the table:
value 0: CREATE Øç¼ Œ Ôç¼ Œ Ðç¼ Exit ¼ç¼ ¸ç¼ Œ p«üxðù ; ´ç¼ Œ pëù@òø €< °ç¼ ŒBerlin Sans FB Demi e ¬ç¼ ˆ°¿^nmra œç¼ ŒBerlin Sans FB Demi e ˜ç¼ help ”ç¼ ˆ object_dump ç¼ test Œç¼ Ž spawn ˆç¼ ‹ load_map „ç¼ Ž
//and so on...

关于 vector 为什么会像那样损坏有什么建议吗?

最佳答案

看来一切都是正确的。编译并执行它。如果一切正确,问题可能出在代码的另一部分。

#include <iostream>
#include <vector>
#include <fstream>

using namespace std;


int SearchFor(std::string search, std::vector<std::string> from)
{
int result=-1;
for(unsigned int i=0; i<from.size(); i++)
if(from[i]==search)
{
result=i;
break;
}
if(result == -1)
{
std::ofstream error("searching.txt");
error<<"search failed, original value = \""<<search<<"\""<<std::endl;
error<<"values in the table:"<<std::endl;
for(unsigned int i=0; i<from.size(); i++)
error<<"value "<<i<<": "<<from[i]<<std::endl;
error.close();
}

return result;
}

int main()
{

std::vector<std::string> objectInitialisationAction;
objectInitialisationAction.push_back("CREATE"); //0
objectInitialisationAction.push_back("END_CREATE"); //1
objectInitialisationAction.push_back("START_TIMELINE"); //2

for(unsigned int i=0; i<objectInitialisationAction.size(); i++)
{
cout<< objectInitialisationAction[i] << endl;
}

cout << "FOUND " << SearchFor("CREATE", objectInitialisationAction);

return 0;
}

我建议你在文件的开头添加 using namespace std; ,这样你就不必在每个声明中添加 std::blablabla ......你的代码将更具可读性 :) 请....INDENT IT :)

关于C++ vector 内存访问问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22247487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com