2015-06-05 2 views
0

Я пытаюсь реализовать C++ 11 std::find() в своем приложении C. Я посмотрел онлайн и нашел эту ссылку: std::find in C++C эквивалентность std :: find

Мой вопрос, как я могу использовать string.end(), string.begin() в C? В основном, как использовать функцию, предусмотренную для std::find() с чистым C?

Так что, если бы я был сделать:

std::string myString = "hello\n\n"; 
pos = myString.find("\n\n"); 

Я хотел бы, чтобы подобный этому в C. Как я могу это сделать?

+0

const char * c = "some string"; c [0] возвращает начало, strlen (c) возвращает длину c, а c [strlen (c) -1] вернет последний – jameswoo

+2

, возможно, ['strstr'] (http://www.cplusplus.com/ ссылка/cstring/strstr /) – ryanpattison

+0

[strstr] (http://linux.die.net/man/3/strstr)? – kaylum

ответ

3

C имеет функцию strstr, которая искала одну строку для другой строки и возвращает указатель на первый символ при обнаружении. Если подстрока не отображается, она возвращает указатель NULL

const char *my_string = "hello\n\n"; 
const char *nl = strstr(my_string, "\n\n"); 
size_t index = -1; 
// now subtract the difference to get the index of the substring 
if (nl != NULL) { 
    index = nl - my_string; 
} 
+0

Пожалуйста, проверьте мой последний ответ на OP. –

+0

@AndrewPeters Я в замешательстве, что вы подразумеваете под «корнями этого»? Как вы думаете, из чего состоит «источник» 'std :: string :: find'? –

+0

Ну, я имею в виду, я хочу посмотреть, из чего состоит источник strstr(). –

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