cin和字符串出错
Error with cin and string
我对C++还很陌生,很难理解这两者之间的区别。当我尝试像下面这样的输入流时
#include <iostream>
#include <string>
string* str = new string[50];
cin >> str;
我得到以下错误:
错误:没有运算符">>"与这些操作数匹配。操作数类型为:std:istream>>std:string*
然而,当我使用char尝试以下选项时,我没有任何问题。
char* str = new char[50];
有人能解释一下这两者之间的区别吗?我不明白为什么字符串会出错。
感谢
在您的代码中:
string* str = new string[50];
这将创建一个由50个string
对象组成的数组。string
类封装了它自己的动态大小的字符数组。您不需要指定长度,string
类为您隐藏了所有繁重的工作。
cin >> str;
这现在失败了,因为cin
不知道如何处理50个字符串的数组。我认为你的意思是简单地创建一个新的空白字符串,其中包含以下内容:
string str;
cin
知道如何处理string
对象。所以你可以使用这样的代码:
cin >> str;
使用string
的一个优点是,当str
超出范围(函数退出)时,将进行适当的清理。没有必要像处理测试代码那样执行delete str
。
关于此代码:
char* str = new char[50];
这将创建一个大小为50的固定大小的字符数组。cin
知道如何处理一个简单的字符数组(char *
),所以处理它没有问题
有关string
类的更多信息,请访问此链接。给出的描述是:
字符串是表示字符序列的对象。
标准字符串类通过类似于标准字节容器的接口为此类对象提供支持,但添加了专门设计用于操作单字节字符字符串的功能。
正如其他人所指出的,在C中,字符串基本上是一个字符数组。C++提供了一种使用"字符串"更简单的方法。
下页介绍了这两种类型,并举例说明:http://www.tutorialspoint.com/cplusplus/cpp_strings.htm
string* str = new string[50];
是一个包含string
s的数组。
char* str = new char[50];
是包含char
s的数组。
在C中,char
阵列与string
阵列相同。因此,当您使用cin
时,它需要将输入传递给string
(在您的情况下,是char
数组)。
- 重载操作程序时出错>>用于类中的字符串 memebr
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 在 Rcpp 中的字符串类型之间转换时出错
- 为什么 stl 字符串C++函数有时出错有时会出错?
- 读取字符串C++的字符时出错
- 读取字符串字符时出错 - 对于数组中的字符串值
- 通过字符串::插入插入字符时出错
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 通过 constexpr 中的 'const char *' glvalue 访问字符串文字的值会出错
- 读取字符串字符时出错
- 计算字符串中字符的出现次数时出错
- 在字符串中反转元音时出错
- C++ 使用 Strtok 读取字符串字符时出错
- 在 c++ 中调用将字符串作为参数传递的函数时出错
- 使用 C++Builder 项目读取字符串中的文件时出错
- 在字符串流中使用来自 github 的代码时出错
- C ++ ifstream 无法读取字符串,并且在读取字符时出错
- 从字符串中读取字符时出错
- std::out_of_range 比较字符串中的符号时出错