gpt4 book ai didi

C++ 数组指向对象的指针错误

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

我遇到了一个似乎很常见的问题,但是通读了对类似问题的回复,我根本找不到解决问题的方法,因为我已经完成了他们建议的操作,例如将变量设为数组.我有以下代码:

#include "stdafx.h"
#include <cstring>
#include <fstream>
#include <iostream>
#include <string>
#include <algorithm>
#include <future>
using namespace std;

string eng2Str[4] = { "money", "politics", "RT", "#"};
int resArr[4];

int main()
{

engine2(eng2Str[4], resArr[4]);

system("Pause");
system("cls");

return 0;
}

void engine2(string &eng2Str, int &resArr)
{
ifstream fin;
fin.open("sampleTweets.csv");
int fcount = 0;
string line;

for (int i = 0; i < 4; i++) {
while (getline(fin, line)) {
if (line.find(eng2Str[i]) != string::npos) {
++fcount;
}
}
resArr[i] = fcount;
}

fin.close();

return;
}

在您标记为重复之前,我已确认以下事项:

  • 我要分配的数组和变量都是 int
  • 它是一个数组

错误是:

expression must have pointer-to-object type

错误发生在“resArr[i] = fcount;”行,我不确定为什么 resArr 是一个 int 数组,我试图从另一个 int 变量中为其分配一个值。我是 C++ 的新手,所以任何帮助都会很棒,因为我真的被困住了!

谢谢!

最佳答案

问题是您已经声明了您的函数来引用单个 stringint,而不是数组。应该是:

void engine2(string *eng2Str, int *resArr)

或:

void engine2(string eng2Str[], int resArr[])

然后当你调用它时,你可以将数组名称作为参数:

engine2(eng2Str, resArr);

另一个问题是函数中的while 循环。这将在 for() 循环的第一次迭代期间读取整个文件。其他迭代不会有任何可读的内容,因为它已经在文件的末尾了。您可以返回到文件的开头,但更好的方法是重新排列两个循环,这样您只需要读取文件一次。

while (getline(fin, line)) {
for (int i = 0; i < 4; i++) {
if (line.find(eng2Str[i]) != string::npos) {
resArr[i]++;
}
}
}

关于C++ 数组指向对象的指针错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44296210/

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