【问题标题】:Why is cin operation undefined?为什么cin操作未定义?
【发布时间】:2018-03-25 03:16:21
【问题描述】:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

main()
{

    bool string1[20];
    cout << "Enter string: ";
    cin >> string1;
    int counter = 0;
    int length;
    length = strlen(string1);

这是不完整的代码,但我的问题是为什么在使用 cin 时会出现编译错误?它说:

错误:“operator>>”不匹配(操作数类型为“std::istream {aka std::basic_istream}”和“bool [20]”)

在这一行:

 cin >> string1;

我不知道如何解决这个问题。

【问题讨论】:

  • 您究竟希望有人使用bool string1[20] 输入什么内容?您是否希望您的用户输入“true”或0101010101101 之类的内容?
  • 我希望他们输入一串字符或数字,例如 gfc098
  • 那你为什么有一个bool 数组?为什么不像你一样使用std::string
  • 没想到但是好像没有解决编译错误
  • 获取一本 C++ 书籍。

标签: c++ arrays boolean cin


【解决方案1】:

bool string1[20]; 是用户输入字符串的错误选择,它所做的只是创建一个包含20booleans、truefalse 的数组,这不是您想要的。

你所追求的是你包含的#include &lt;string&gt;

string string1;
cout << "Enter string: ";
cin >> string1;

您可以通过使用std::string 提供的length 方法而不是使用strlen 来获取长度

auto length = string1.length()

【讨论】:

    【解决方案2】:

    没有用于读取bool 值数组的operator&gt;&gt;。您需要的是一个 char 值数组:

    #include <iostream>
    #include <string>
    #include <iomanip>
    using namespace std;
    
    int main() {
        char string1[20];
        cout << "Enter string: ";
        cin >> setw(20) >> string1;
        int length = strlen(string1);
    

    或者更好,单个std::string

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string string1;
        cout << "Enter string: ";
        cin >> string1;
        int length = string1.length();
    

    【讨论】:

      【解决方案3】:

      我认为您将字符串与数组混淆了。您的代码中的 string1 不是字符串,而是数组。因此,您不能在不提供正确索引号的情况下将数据放入其中。还要记住它是一个布尔类型,所以你只能输入 0/1/true/false 值。

      同样,您在代码中使用了 strlen() 函数,该函数用于确定字符串的长度,但您是一个数组。你没有问这个问题,但是当我在我的 IDE 中运行代码时它出错了。

      这是一种方法:

          main()
          {
              bool string1[20];
              cout << "Enter string: ";
              for(int i=0;i<20;i++)//iterating through the boolian array
              {
                  cin >> string1[i];
              }
              int counter = 0;
              int length;
              length = sizeof(string1)/sizeof(string1[0]);
              cout<<length;//printing the size of the array
          }
      

      【讨论】:

        猜你喜欢
        • 2012-07-23
        • 2021-04-28
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-27
        • 1970-01-01
        相关资源
        最近更新 更多