首先,请看下面的简单代码。在C++中读取c样式字符串时出错
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名;'来代替。 – 2014-10-08 00:43:05
这两个版本(有和没有'const')都有部分相同的,部分不同的问题。但是,因为你标记了'C++'这个问题:为什么不使用std :: string来完全避免内存/指针问题呢? – Oguk 2014-10-08 00:44:23
您不会从该代码中获得该警告。我猜它实际上就是'char * name =“something”;'。无论如何,你不能写入字符串常量或未初始化的指针,所以使用'std :: string'。 – 2014-10-08 00:46:29