在C++中读取C样式字符串时,会出现一个错误

When reading a C-style string in c++ an error appears

本文关键字:错误 一个 读取 C++ 样式 字符串      更新时间:2023-10-16

首先,看看下面的简单代码。

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 *是指向内存中可以读取字符串的位置的指针,但必须首先使用newmalloc来分配内存。

然而,在C++中还有另一个更好的选择:使用std::string:

#include <string>
int main()
{
    std::string name;
    cout << "Enter your name: ";
    cin >> name;
    cout << "Your name is: " << name;
    return 0;
}

如果你打算使用c字符串,你可以分配内存并执行以下操作:

int main()
{
    char name[MAX_SIZE];
    cout << "Enter your name: ";
    cin.get(name, MAX_SIZE);
    cout << "Your name is: " << name;
    return 0;
}

(感谢Neil Kirk的改进)

相关文章: