如何将 cin 转换为 const char*
在我的程序中,我通过 iostream 获取输入:
char input[29];
cin >> input;
我需要使用此输入作为此类的参数,该类将此参数作为其构造函数
class::class(const char* value) {
/* etc */ }
关于如何转换它有任何想法吗?
谢谢
In my program I get input via iostream:
char input[29];
cin >> input;
I need to use this input a parameter for this class that has this parameter as its constructor
class::class(const char* value) {
/* etc */ }
Any idea on how to convert it?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您应该能够将
input
作为参数传递给构造函数。char[]
将衰减为char *
,它与const char *
兼容。但是: 流式传输到固定长度缓冲区是一个非常糟糕的主意(如果有人提供的输入长度超过 28 个字符怎么办?)。使用
std::string
代替(如 @George 的答案)。You should just be able to pass
input
as the argument to your constructor. Achar[]
will decay to achar *
, which is compatible with aconst char *
.However: Streaming into a fixed-length buffer is a really bad idea (what if someone provides an input that is more than 28 characters long?). Use a
std::string
instead (as in @George's answer).没有办法>>运算符知道它只能读取 29 个字节。
因此,您必须明确指定它:
或者您可以使用 std 字符串。
如果您需要读取整行而不是
上述所有内容中的一个单词 Note,您应该在读取后检查流的状态以确保读取有效。
There is no way for the >> operator to know that it can only read 29 bytes.
So you must specify it explicitly:
Alternatively you can use a std string.
If you need to read a whole line rather than a word
Note in all the above you should really check the state of the stream after the read to make sure the read worked.