C ++ std :: cin Необработанное исключение: место записи нарушения прав доступа - PullRequest
1 голос
/ 07 июля 2011

При попытке использования std::cin я получаю нарушение прав доступа.Я использую char*, и он не позволяет мне вводить свои данные.

void Input(){
while(true){
    char* _input = "";
    std::cin >> _input; //Error appears when this is reached..
    std::cout << _input;
    //Send(_input);

Ответы [ 3 ]

1 голос
/ 07 июля 2011
char* _input = ""; // note: it's deprecated; should have been "const char*"

_input - указатель, указывающий на строковый литерал. Ввод в это неопределенное поведение. Либо использовать

char _input[SIZE]; // SIZE declared by you to hold the enough characters

или

std::string _input;
1 голос
/ 07 июля 2011

Вы не предоставили буфер для cin для хранения данных.

operator>>(std::istream&, std::string) выделит память для читаемой строки, но вы используете operator>>(std::istream&, char*), который записываетпредоставленный вызывающим буфер, и вы не предоставили доступный для записи буфер (строковые литералы не доступны для записи), поэтому вы получили нарушение прав доступа.

0 голосов
/ 07 июля 2011

Попробуйте это:

char _input[1024];
std::cin >> _input;
std::cout << _input;

Или лучше:

std::string _input;
std::cin >> _input;
std::cout << _input;
...