cin和字符串错误 我对C++比较陌生,我很难理解这两个之间的区别。当我尝试以下输入流时 #include <iostream> #include <string> string* str = new string[50]; cin >> str;

cin和字符串错误 我对C++比较陌生,我很难理解这两个之间的区别。当我尝试以下输入流时 #include <iostream> #include <string> string* str = new string[50]; cin >> str;,c++,string,char,C++,String,Char,有人能解释一下这两者的区别吗?我不明白为什么字符串会出错 谢谢 是包含字符串的数组 是包含字符的数组 在C语言中,字符数组与字符串相同。因此,当您使用cin时,它需要将输入传递给字符串,或者在您的情况下,传递给字符数组。正如其他人所指出的,在C中,字符串基本上是字符数组。C++提供了使用String .< /P>进行它的更简单方法。 以下页面介绍了这两种类型,并举例说明:在代码中: string* str = new string[50]; 这将创建一个包含50个字符串对象的数组。string

有人能解释一下这两者的区别吗?我不明白为什么字符串会出错

谢谢

是包含字符串的数组

是包含字符的数组


在C语言中,字符数组与字符串相同。因此,当您使用cin时,它需要将输入传递给字符串,或者在您的情况下,传递给字符数组。

正如其他人所指出的,在C中,字符串基本上是字符数组。C++提供了使用String .< /P>进行它的更简单方法。 以下页面介绍了这两种类型,并举例说明:

在代码中:

string* str = new string[50];
这将创建一个包含50个字符串对象的数组。string类封装了自己的动态大小的字符数组。您不需要指定长度,string类隐藏了所有这些繁琐的工作

cin >> str;
由于cin不知道如何处理一个包含50个字符串的数组,因此该操作现在失败。我认为您的意思是创建一个新的空白字符串,如下所示:

string str;
cin知道如何处理字符串对象。因此,您可以使用如下代码:

cin >> str;
使用字符串的一个优点是,当str超出范围时,函数退出,将进行适当的清理。没有必要像处理测试代码那样删除str

关于本守则:

char* str = new char[50];
这将创建大小为50的固定大小字符数组。cin知道如何处理一个简单的字符数组char*,因此处理它没有问题

有关string类的更多信息,请访问此处。描述如下:

字符串是表示字符序列的对象

标准字符串类通过与标准字节容器类似的接口为此类对象提供支持,但添加了专门设计用于处理单字节字符字符串的功能


区别在于一个是字符串数组,另一个是字符数组。字符数组是C字符串,但未定义std::string[]的重载。它们是不同的类型。您可能只是想使用字符串str;你应该解释你想做什么。您不知道第一个动态分配50个字符串的数组吗?或者您正在尝试创建字符串数组?您是否专门尝试进行动态分配?还是你没有意识到你有选择?为什么不仅仅是字符串str;cin>>str;?您已经定义了字符串数组…要将值初始化为something数组,在示例字符串中,您应该使用cin>>str[0];至于49@DavidSchwartz,我试图创建一个简单的字符串,并使用cin>>函数将我想要的内容放入其中。现在我很清楚,我正在创建一个字符串数组,这是错误的,但是当我尝试你在这里提到的字符串str时;cin>>str;我得到了上面提到的同样的错误,你应该用string str创建一个新字符串;谢谢,这是有道理的,但我仍然收到相同的错误,如果我设置它只是字符串str;我是否需要为cin使用字符数组,或者我是否仍然在做一些错误的事情?如果您创建一个包含适当include的新程序和一个只包含字符串str的main;cin>>str;也许你需要std::string str;而不是字符串str@Vincearuzzese:您使用的是什么编译器/开发环境?Visual C++微软Windows GCC?等
string str;
cin >> str;
char* str = new char[50];