错误:没有运算符“>>”匹配这些参数

时间:2012-04-04 03:22:00

标签: c++ cin

int main()
{ 
char* NamePointer = new char;


std::cout << "Enter the file you want to edit (MUST BE IN THE PROJECT'S DIRECTORY): ";
std::cin >> &NamePointer;

const char* FileName = NamePointer;
delete &NamePointer;


return 0;
}

这会返回标题中的错误:

std::cin >> &NamePointer;

有什么想法吗?这可能是我想念的简单事情,但当我查看它时,我没有得到答案。

只是固定它,为了加入而烦恼!我拿出了“&amp;”在“&amp; NamePointer”中。

是的,我刚刚发现了另一种使用c_str()的方法。遗憾!

2 个答案:

答案 0 :(得分:3)

你应该:

std::cin >> NamePointer;

另外,你只是分配一个字符的内存,可能你的意思是:

char* NamePointer = new char[MAX_SIZE];

并将其解除为:

delete []NamePointer;

请注意,C ++这样做的方法是简单地使用std::string来处理使用char*时遇到的缓冲区溢出问题:

std::string Name;
std::cin >> Name;

答案 1 :(得分:0)

此处不需要地址运算符。简单地:

std::cin >> NamePointer;

我注意到的其他一些事情:

char* NamePointer = new char;

你可能想要比一个角色更多的空间。一个简单的开始可能是一个大的静态分配:

char NamePointer[1024];

在这种情况下,您最后省略了delete语句(顺便说一下,也没有使用地址运算符)。