在我的程序中,我通过iostream获得输入:
char input[29];
cin >> input;
我需要为此类使用此输入参数,该参数具有此参数作为其构造函数
class::class(const char* value) {
/* etc */ }
关于如何转换它的任何想法?
由于
答案 0 :(得分:3)
string tmp;
cin >> tmp;
foo(tmp.c_str());
答案 1 :(得分:3)
您应该能够将input
作为参数传递给构造函数。 char[]
会衰减为char *
,与const char *
兼容。
但是:流入固定长度的缓冲区是一个非常糟糕的主意(如果某人提供的输入长度超过28个字符会怎么样?)。请改用std::string
(如@ George的回答)。
答案 2 :(得分:2)
>>无法使用操作员知道它只能读取29个字节 所以你必须明确指定它:
char input[29] = { 0 }; // note sets all characters to '\0' thus the read will be '\0' terminated.
cin.read(input, 28); // leave 1 byte for '\0'
或者你可以使用std字符串。
std::string word;
cin >> word; // reads one space seporated word.
Class objet(word.c_str()); // Or alternatively make you class work with strings.
// Which would be the correct and better choice.
如果您需要阅读整行而不是单词
std::string line;
std::getline(std::cin, line);
Class objet(line.c_str()); // Or alternatively make you class work with strings.
// Which would be the correct and better choice.
注意以上所有内容,您应该在读取后检查流的状态,以确保读取有效。
std::string word;
if (cin >> word) // using the if automatically checks the state. (see other questions).
{
Class objet(word);
}