将数据输入一行到bool数组

时间:2017-11-22 20:19:43

标签: c++ cin

可以在一行中以正确的方式将数据输入到bool数组中吗? 我有这样的事情:

#include <iostream>

using namespace std;

int main() {

  unsigned short a;
  cin >> a;

  bool *b = new bool[a];

  for(int i = 0; i < a; ++i)
    cin >> b[i]; 

  for(int i = 0; i < a; ++i)
    cout << b[i]; 

  delete [] b;

  return 0;
}

例如:

正确输入:

5
1
0
1
0
1

正确输出:

10101

但我想以这种方式:

输入:

5
10101

输出:

10101

2 个答案:

答案 0 :(得分:0)

您可以将整个输入读入字符串,然后转换为&#39; 1&#39;和&#39; 0&#39; char进入bool s:

#include <iostream>
#include <string>

int main()
{

    std::string input;
    std::cin >> input;

    std::cout << "Input length was: " << input.length() << std::endl;
    std::cout << "Output: ";

    for (auto c : input)
    {
        std::cout << static_cast<bool>(c - '0');
    }

    return 0;
}

enter image description here

答案 1 :(得分:0)

您可以从输入中读取字符并将其转换为bool,例如:

for(int i = 0; i < a; ++i) {
    char c;
    cin >> c;
    b[i] = static_cast<bool>(c - '0');
}

注意:这将允许以单行和多行输入,因为cin忽略空格字符。