#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, вероятно, важна для этого вопроса.