![](/img/trans.png)
[英]Why can't use std::cin by setting std::cin.clear() after a wrong input?
[英]std::cin limitations can't input LPCSTR
我有一个程序,其中变量类型之一是LPCSTR,用户需要输入,但是std :: cin无法给LPCSTR一个值,这里是一些代码
LPCSTR windowName;
std::cin >> windowName;
LPCSTR
类型只是一个指针,它是const char *
的别名。
所以你的陈述有两个问题
std::cin >> windowName;
第一个是您使用未初始化的指针作为目标。 第二个问题是指针(一旦正确初始化)指向一个恒定的存储区域,您不能对其进行写入或更改。
编译器应抱怨第二个问题(指向常量内存的指针),而未初始化的指针将在运行时导致未定义的行为(并可能导致崩溃)。
最简单的解决方案是将std::string
用作字符串,并且当您需要LPCSTR
只需使用c_str()
成员函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.