line.find 不会编译,未声明行

line.find won't compile, line is not declared

我是一个非常新手的程序员,我正在尝试了解字符串的查找函数。在大学,我们被告知要使用 C 字符串,这就是为什么我认为它不起作用的原因。编译的时候问题来了,编译报错line was not declared。这是我的代码:

 #include <iostream>
 #include <fstream>
 #include <cstring>
 #include <string>

 using namespace std;

int main()
{
    char test[256];
    char ID[256];


    cout << "\nenter ID: ";

    cin.getline(ID, 256);

    int index = line.find(ID);

    cout << index << endl;

    return 0;
}

请帮忙,它变得非常令人沮丧,因为我需要理解这个函数才能完成我的作业:/

您正在尝试使用 C 风格的字符串。但是find是C++的成员stringclass。如果您想使用 C 风格的字符串,请使用对 C 风格的字符串进行操作的函数,例如 strcmpstrchrstrstr 等。

假设您实际上也将一些数据输入 test,那么一种方法是:

char *found = strstr(test, ID);

if ( !found )
    cout << "The ID was not found.\n";
else
    cout << "The index was " << (found - test) << '\n';

因为find函数是一个成员函数string class,你应该声明一个字符串class的目的。我想你会这样做:

string test = "This is test string";
string::size_type position;
position = test.find(ID);
if (position != test.npos){
    cout << "Found: " << position << endl;
}
else{
    cout << "not found ID << endl;
}