2015-06-08 3 views
1

Я очень начинающий программист, и я пытаюсь понять функции поиска для строк. В uni нам говорят использовать c-строки, поэтому я считаю, что он не работает. Проблема возникает при компиляции, возникает ошибка компиляции, которая не была объявлена ​​line. Это мой код:line.find не будет компилироваться, строка не объявлена ​​

#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; 
} 

Пожалуйста, помогите, это стало действительно разочаровывает, как мне нужно, чтобы понять эту функцию, чтобы выполнить свое задание:/

+5

Где именно вам кажется, 'line' объявляется * в коде *? – WhozCraig

+0

см., Я думал, что это будет тест, но когда я заменил его на test.find (ID), произошла другая ошибка компиляции, поэтому iassumed, что это не проблема – alexnoob

+0

'test' - это просто массив. Возможно, вы хотели сделать его «std :: string», чтобы использовать эти функции-члены? –

ответ

1

Вы пытаетесь использовать строки C-стиль. Но find является членом класса C++ string. Если вы хотите использовать строки стиля C, используйте функции, которые работают с строками стиля C, такими как strcmp, strchr, strstr и так далее.

+0

Спасибо, кучи! – alexnoob

1

предположив, что вы на самом деле ввод некоторых данных в test также, то один из способов сделать это будет:

char *found = strstr(test, ID); 

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

Спасибо, что тоже очень полезно, потому что это то, как мне нужно использовать его в моем задании :) – alexnoob

0

Поскольку найти фикцию функции члена строки класса, Вы должны объявить объект в строке класса, , Я думаю, что вы будете делать это так:

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; 
 
}

Смежные вопросы