Как вывести значение указателя типа char* через стандартный поток вывода std::cout?
#include<iostream>
#include<time.h>
#include<string>
#include<clocale>
#include<cctype>
using namespace std;
void Str(string str, char s)
{
for (int i = 0; i < str.length(); i++)
{
if (str[i] != ' ' && str[i + 1] != ' ' && str[i] == s)
{
cout << &str[i] << "\t";
}
}
}
int main()
{
setlocale(LC_ALL, "Rus");
string str;
char s;
cout << "Введите строку: ";
getline(cin, str);
cout << "Введите букву: ";
cin >> s;
Str(str, s);
return 0;
}
Программа должна выводить указатели на начало слов начинающихся с заданной с клавиатуры буквы. После выполнения функции возвращается остаток предложения начинающегося с заданной буквы. Да, я понимаю что это и есть указатель, но как вывести адрес этого символа в памяти?
Ответы (1 шт):
Автор решения: wololo
→ Ссылка
Для стандартных потоков вывода есть перегруженный оператор operator<<, принимающий в качестве параметра указатель const char*. Данная перегрузка нужна для вывода нуль-терминированных C-строк, что и происходит в вашей программе.
Если необходимо вывести значение самого указателя char*, то достаточно привести его к типу const void*:
cout << static_cast<const void*>(&str[i]) << "\t";