Какую исходную строку я использую?

#c #qt-creator

#c #qt-creator

Вопрос:

Я немного запутался в том, какую функцию getline() использует C . немного кода:

 std::string name;
std::cout << "What is your name? ";
std::getline(std::cin, name); 
  

Я думал, что я использовал std::getline из заголовка строки, но когда я щелкаю мышью по функции getline(), IDE перенаправляет меня на stdio.h, и это заголовок C.

Во время выполнения есть способ узнать, какую функцию я использую?

PS: Да, я включаю заголовок строки (также, если я этого не сделаю, что он предлагает, поскольку я могу удалить его отовсюду, где я его использовал, и все по-прежнему работает, но это вопрос на другой день).

РЕДАКТИРОВАТЬ: qt-creator перенаправляет меня на эту функцию внутри stdio.h

 /* Like `getdelim', but reads up to a newline.

   This function is not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation it is a cancellation point and
   therefore not marked with __THROW.  */
extern _IO_ssize_t getline (char **__restrict __lineptr,
                size_t *__restrict __n,
                FILE *__restrict __stream) __wur;
  

И это еще более странно, потому что я использую 2 параметра, а здесь требуется 3…

Комментарии:

1. У вас есть #include <string> ? (существуют разные заголовки строк)

2. 1) Заголовки могут включать другие заголовки. 2) Это не может быть заголовок C, из-за того, что в C нет понятия потоков.

3. Вы также включаете, <iostream> поскольку используете std::cout . Это приведет к импорту множества других getline файлов. Смотрите строку получения . Возможно, IDE просто получает неправильную строку.

4. Какая вызываемая функция известна во время компиляции. Нет необходимости запускать код, чтобы узнать, какая функция вызывается.

5. @eyllanesc IDE, вероятно, важна для этого вопроса.