简体   繁体   English

如何将输入存储到数组中? C ++

[英]how to store an input into an array? C++

int b;
int array[12];

cout << "Enter binary number: ";
cin >> b;

(for example: b will be 10100) (例如:b将是10100)

** How to store b(10100) into an array so that it'll be [1][0][1][0][0] ** **如何将b(10100)存储到数组中,使其为[1] [0] [1] [0] [0] **

cout << array[0] << endl;

** output should be 1 ** **输出应为1 **

cout << array[1] << endl;

** output should be 0 ** **输出应为0 **

Please help thank you. 请帮忙谢谢。

A string can also be treated as an array of char s. string也可以视为char的数组。 So you can get input into a string, instead, and the cout statements you wrote, should work. 所以你可以输入一个字符串,而你写的cout语句应该可以工作。 However, they will be char s and not ints, so you would be storing '1' and '0' instead of 1 and 0. Converting between them is easy, just use array[0]-'0' 但是,它们将是char而不是int,所以你将存储'1'和'0'而不是1和0.它们之间的转换很容易,只需使用array[0]-'0'

#include <string>
#include <iostream>

using namespace std;

int main()
{
  string array;
  cout << "Enter binary number: "; cin >> array;
  // Suppose the user inputs 10100
  cout << array[0] << endl; // outputs '1'
  cout << array[1] << endl; // outputs '0'
  cout << array[2] << endl; // outputs '1'

  return 0;
}

Update : Added compilable code. 更新 :添加了可编译的代码。 Note that this is pretty much the original code posted with the question, except for inputting a string . 请注意,除了输入string之外,这几乎是与问题一起发布的原始代码。

You can use boots dynamic bitset 您可以使用boot动态bitset

#include "boost/dynamic_bitset.hpp"
#include <sstream>
#include <iostream>

int main()
{
    boost::dynamic_bitset<>     val;
    std::stringstream           input("1010101010");

    input >> val;                        // Input a binary number
                                         // Can use std::cin or another stream
    std::cout << val.to_ulong() << "\n";
    std::cout << val[5] << "\n";
}

If you don't have boost use the std::bitset. 如果没有boost,请使用std :: bitset。
The only problem with std::bitset it has a fixed size std :: bitset唯一的问题是它有一个固定的大小

#include <bitset>
#include <sstream>
#include <iostream>

int main()
{
    std::bitset<16>             val;     // fixed 16 bit size

    std::cout << "Enter binary number:\n";   
    std::cin >> val;                        // Input a binary number
                                         // Can use std::cin or another stream
    std::cout << val.to_ulong() << "\n";
    std::cout << val[5] << "\n";
}

I had originally wrote up an answer similar to Pablo, but seeing as he already posted it, here is one more consistent with the information given. 我原本写了一个类似于Pablo的答案,但看到他已经发布了它,这里更符合所提供的信息。

It takes an int input and places it into an int array . 它接受一个int输入并将其放入int array

#include <iostream>
#include <cmath>

int main( )
{
    int b;
    int numDigits;

    // Get bit string int
    std::cin >> b;

    // Get the number of digits
    numDigits = std::floor( std::log10( ( float )std::abs( b != 0 ? b : 1 ) ) ) + 1;

    // Dynamically create a new array of the appropriate size
    int* arr = new int[ numDigits ];

    // Initialize all the blocks of memory
    std::memset( arr, 0, numDigits );

    // Fill the array
    for( int i = 0; i < numDigits; i++ )
    {
        arr[ numDigits - i - 1 ] = b % 10;
        b /= 10;
    }

    system( "PAUSE" );

    // Delete the array
    delete [] arr;

    return 0;
}

This one dynamically sets the size of the array so it fits correctly. 这个动态地设置数组的大小,使其正确匹配。

The following example stores bits to a raw C-style array as you require. 以下示例根据需要将位存储到原始C样式数组。 But you can replace it with a std::vector if you want. 但如果需要,可以用std :: vector替换它。

int main()
{
  // assume sizeof(int) is 32, or you can use heap-allocated array or std::vector
  int array[32];

  unsigned int mask = 1;
  // mask is initially 0x80000000
  mask = mask << (sizeof(int)*8 - 1);

  int i = 0;

  // we start counting from the first "1",
  // preceding "0"s are ignored to display
  bool started = false;

  int b;
  cin >> b;

  while (mask != 0)
  {
    // if current bit is "1" or "0"
    if (mask & b) 
    {
      started = true;
      array[i++] = 1;
    }
    // if current bit is "0" and counting started
    else if (started)
    {
      array[i++] = 0;
    }
    // ready to test next bit
    mask = mask >> 1;
  }

  // test result
  for (int j = 0; j < i; ++j) cout << array[j];

  cout << endl;
  return 0;
}

Test cases:
1. b = 8  => array: 1000
2. b = -8 => array: 11111111111111111111111111111000
3. ..

STORING A BINARY NUMBER INTO AN ARRAY 将二进制数存储到阵列中


char binaryArray [5]; // The array looks like this: [][][][][]

cout << "Enter binary number: ";
cin >> binaryArray; // Stores the binary number into the array: [1][0][1][0][0]

cout << binaryArray[0] << endl; // The first element is sent to standard output.
cout << binaryArray[1] << endl; // The second element is sent to standard output.

For your input the output will be: 对于您的输入,输出将是:

1
0

Here we have an array of characters. 这里我们有一个字符数组。 We input the binary number into the array and then we print each element of the array to display each bit. 我们将二进制数输入到数组中,然后打印数组的每个元素以显示每个位。 The first print line accesses the first element [1] [0] [1] [0] [0]. 第一个打印行访问第一个元素[1] [0] [1] [0] [0]。 The second print line accesses the second element [1] [0] [1] [0] [0]. 第二个打印行访问第二个元素[1] [0] [1] [0] [0]。

Let's say we had a binary number with 100 characters. 假设我们有一个包含100个字符的二进制数。 The way that we output each element of the array would take a long time. 我们输出数组的每个元素的方式需要很长时间。

1.) Can you think of a more efficient way of printing out the contents of our array? 1.)您能想到一种更有效的打印阵列内容的方法吗?

2.) How can we ensure that the user is inputting only ones and/or zeroes? 2.)我们如何确保用户只输入一个和/或零?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 c++ - 如何将用户输入存储到数组中 - How to store user input to array in c++ 如何在C ++数组中存储二进制输入 - How to store binary input in a C++ array 如何将用户字符串输入存储在数组中,C ++ - How to store user string input in array, C++ 如何接受用户输入,对该输入进行数学运算,并将结果存储在数组中? 在 C++ - how to take user input, do math to that input, and store the results in an array? in C++ 如何在C ++中将一个字符的用户输入存储到数组的EACH元素中? - How to store user input of one character into EACH element of an array in C++? 如何从用户(这是一个列表)获取输入并将值存储在 C++ 中的数组中? - How to take input from user ( which is a list ) and store values in array in c++? 如何从控制台输入学生的全名(包括空格)并将其存储在c ++中的数组中? - How do I take full name of students(including space) as input from console and store it in an array in c++? 如何将同一行中的多个整数作为输入并将它们存储在 c++ 中的数组或向量中? - How to take multiple integers in the same line as an input and store them in an array or vector in c++? 如何在C++中将浮点值存储在数组中 - how to store float value in the array in C++ 如何在C ++中将结构数据存储在数组中? - How to store struct data in an array in C++?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM