C++ std::cin 未处理的异常:访问冲突写入位置
我在尝试使用 std::cin
时遇到访问冲突。我正在使用 char*
,但它不允许我输入数据。
void Input(){
while(true){
char* _input = "";
std::cin >> _input; //Error appears when this is reached..
std::cout << _input;
//Send(_input);
I'm getting an access violation when trying to use std::cin
. I'm using a char*
and it's not allowing me to input my data.
void Input(){
while(true){
char* _input = "";
std::cin >> _input; //Error appears when this is reached..
std::cout << _input;
//Send(_input);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您没有为
cin
提供用于存储数据的缓冲区。operator>>(std::istream&, std::string)
将为正在读取的字符串分配存储空间,但您使用的是operator>>(std::istream&) , char*)
写入调用者提供的缓冲区,并且您没有提供可写缓冲区(字符串文字不可写),因此您遇到了访问冲突。You didn't provide a buffer for
cin
to store the data into.operator>>(std::istream&, std::string)
will allocate storage for the string being read, but you're usingoperator>>(std::istream&, char*)
which writes to a caller-provided buffer, and you didn't provide a writable buffer (string literals are not writable), so you got an access violation._input
是指向字符串文字的指针。输入它是一种未定义的行为。要么使用
或
_input
is pointer pointing to a string literal. Inputting into it is an undefined behavior.Either use
or
试试这个:
或者更好:
Try this:
Or better: