【发布时间】:2014-12-02 13:24:03
【问题描述】:
首先,看下面的简单代码。
int main(){
char *name;
cout << "Enter your name: ";
cin >> name;
cout << "Your name is: " << name;
return 0;
}
前面的代码给了我以下错误warning: deprecated conversion from string constant to 'char*'。
但我已经通过以下方式解决了这个问题:
const char *name;
编译代码后,我有另一个错误no match for 'operator>>' (operand types are 'std::istream {aka std::basic_istream<char>}' and 'const char*')。
上一个错误是什么原因,如何解决?
【问题讨论】:
-
char *没有为要输入的字符串分配任何存储空间。您应该改用std::string name;。 -
两个版本(有和没有
const)有部分相同,部分不同的问题。但是,既然您标记了问题“c++”:为什么不使用 std::string 来完全避免内存/指针问题? -
您不会从该代码中收到该警告。我猜它实际上类似于
char * name = "something";。在任何情况下,您都不能写入字符串常量或未初始化的指针,因此请使用std::string。
标签: c++