gpt4 book ai didi

c++ - 访问指向 vector C++ 的指针

转载 作者:太空宇宙 更新时间:2023-11-04 15:24:57 25 4
gpt4 key购买 nike

我无法访问以下 vector 。我是 vector 的新手,所以这可能是我做错的一个小语法问题。这是代码....

void spellCheck(vector<string> * fileRead)
{
string fileName = "/usr/dict/words";
vector<string> dict; // Stores file

// Open the words text file
cout << "Opening: "<< fileName << " for read" << endl;

ifstream fin;
fin.open(fileName.c_str());

if(!fin.good())
{
cerr << "Error: File could not be opened" << endl;
exit(1);
}
// Reads all words into a vector
while(!fin.eof())
{
string temp;
fin >> temp;
dict.push_back(temp);
}

cout << "Making comparisons…" << endl;
// Go through each word in vector
for(int i=0; i < fileRead->size(); i++)
{
bool found = false;

// Go through and match it with a dictionary word
for(int j= 0; j < dict.size(); j++)
{
if(WordCmp(fileRead[i]->c_str(), dict[j].c_str()) != 0)
{
found = true;
}
}

if(found == false)
{
cout << fileRead[i] << "Not found" << endl;
}
}
}

int WordCmp(char* Word1, char* Word2)
{
if(!strcmp(Word1,Word2))
return 0;
if(Word1[0] != Word2[0])
return 100;
float AveWordLen = ((strlen(Word1) + strlen(Word2)) / 2.0);

return int(NumUniqueChars(Word1,Word2)/ AveWordLen * 100);
}

错误在行中

if(WordCmp(fileRead[i]->c_str(), dict[j].c_str()) != 0)

cout << fileRead[i] << "Not found" << endl;

问题似乎是,因为它以指针的形式存在,我用来访问它的当前语法无效。

最佳答案

使用 []在指向 vector 的指针上不会调用 std::vector::operator[] .调用std::vector::operator[]如您所愿,您必须有一个 vector ,而不是 vector 指针。

使用指向 vector 的指针访问 vector 的第 n 个元素的语法为:(*fileRead)[n].c_str() .

但是,您应该只传递对 vector 的引用:

void spellCheck(vector<string>& fileRead)

那么就是:

fileRead[n].c_str()

关于c++ - 访问指向 vector C++ 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10868776/

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