C/C++

Как в с++ можно ввести строку заданную через указатель

Как в с++ можно ввести строку заданную через указатель(метод cin не даёт вписать строку с пробелами, а gets не работает со строкой через указатель).
const char* str;
Для ввода строки, заданной через указатель const char* str, в C++ можно воспользоваться функцией std::getline(). Она позволяет считать строку из стандартного потока ввода (обычно это консоль), включая пробелы и сохранить ее в заданный буфер.

Пример кода для ввода строки через указатель:

#include <iostream>
#include <string>

int main() {
const int MAX_LEN = 100;
char buffer[MAX_LEN];
const char* str = buffer;

std::cout << "Enter a string: ";
std::getline(std::cin, std::string(buffer, MAX_LEN)); // читаем строку

std::cout << "You entered: " << str << std::endl;
return 0;
}


В этом примере мы создаем буфер char buffer[MAX_LEN], который будет хранить вводимую строку. Затем мы задаем указатель const char* str равным этому буферу.

Функция std::getline() принимает два аргумента: объект типа std::istream& (обычно это std::cin) и строку типа std::string, которая будет использоваться в качестве буфера для сохранения вводимой строки. Мы используем конструктор std::string(buffer, MAX_LEN), чтобы создать объект std::string из нашего буфера.

Когда строка считана, мы можем использовать указатель const char* str для доступа к строке, сохраненной в буфере.

Обратите внимание, что в этом примере мы ограничили максимальную длину вводимой строки значением MAX_LEN. Если вы ожидаете ввода строк большей длины, увеличьте эту константу или используйте динамическое выделение памяти.
СС
Сергей Силантьев
558
Лучший ответ
Непосредственно в const char* строку ввести нельзя. Const запрещает. Запись можно производить в статическую строку char[размер] или в динамическую char* для которой выделена память методами fgets, cin.getline(), getline, scanf (со специальным форматом), а так же самописными функциями, в основе которых лежит посимвольный ввод.
Все безопасные функции ввода строки требуют указания максимального размера строки либо использования string, который сам управляет длиной строки.
Игорь Скугарев
Игорь Скугарев
51 416
В C++ можно ввести строку, заданную через указатель, используя объект класса std::string. Для этого можно воспользоваться функцией std::getline, которая считывает строку из потока ввода и сохраняет ее в объекте std::string. Затем можно получить указатель на строку, используя метод c_str у объекта std::string.

Пример кода:


 #include   

#include



int main() {

std::string str;

std::getline(std::cin, str);

const char* ptr = str.c_str();

std::cout