Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++ Cin input to array

Tags:

c++

arrays

cin

I am a beginner in c++ and I want to enter a string as character by character into an array , so that I can implement a reverse function .. However unlike C when the enter is hit a '\n' is not insterted in the stream.. how can I stop data from being entered ?

my code is :

#include<iostream>
#include<array>
#define SIZE 100
using namespace std;

char *reverse(char *s)
{
    array<char, SIZE>b;
    int c=0;
    for(int i =(SIZE-1);i>=0;i--){
        b[i] = s[c];
        c++;
    }

    return s;
} 

int main()
{
    cout<<"Please insert a string"<<endl;
    char a[SIZE];
    int i=0;
    do{
        cin>>a[i];
        i++;
    }while(a[i-1]!= '\0');

    reverse(a);

    return 0;
}
like image 469
Dylan Galea Avatar asked Oct 06 '16 14:10

Dylan Galea


People also ask

How do you input into an array in C++?

There are three ways to take an array as user input in a function in c++. Declare a global array. Declare an array in the function. Declare an array in the main function and pass it to the function.

How do you use CIN input?

The usage of cin is simple, too, and as cin is used for input, it is accompanied by the variable you want to be storing the input data in: std::cin >> Variable; Thus, cin is followed by the extraction operator >> (extracts data from the input stream), which is followed by the variable where the data needs to be stored.

How do I input an array in one line?

It can be done the string way i.e. declare the string of maximum size and take input of the string, find its length and you can then know the number of elements in the input. Ex: taking 1000 as the maximum size of input, char arr[1000]; gets(arr); int len=strlen(arr);

How to input values into an array and display them in C?

Write a C Program to input values into an array and display them. Here’s a Simple Program input values into an array and display them in C Programming Language. Following C Program ask to the user to enter values that are going to be stored in array. Here we make an intialize an array of 5 elements to be stored in it i.e arr [5].

How to store values in an array in C program?

Following C Program ask to the user to enter values that are going to be stored in array. Here we make an intialize an array of 5 elements to be stored in it i.e arr [5]. In this program , we use two for loop : One is to input values in the program to store to an array.

How to print an element of an array in C++?

Here's how you can print an individual element of an array. // print the first element of the array printf("%d", mark); // print the third element of the array printf("%d", mark); // print ith element of the array printf("%d", mark [i-1]); Example 1: Array Input/Output

What is an array in C++?

An array is a collection of data that holds fixed number of values of same type. For example: if you want to store marks of 100 students, you can create an array for it. float marks[100]; The size and type of arrays cannot be changed after its declaration.


2 Answers

When you read character by character, it really reads characters, and newline is considered a white-space character.

Also the array will never be terminated as a C-style string, that's not how reading characters work. That means your loop condition is wrong.

To begin with I suggest you start using std::string for your strings. You can still read character by character. To continue you need to actually check what characters you read, and end reading once you read a newline.

Lastly, your reverse function does not work. First of all the loop itself is wrong, secondly you return the pointer to the original string, not the "reversed" array.


To help you with the reading it could be done something like

std::string str;
while (true)
{
    char ch;
    std::cin >> ch;
    if (ch == '\n')
    {
        break;  // End loop
    }

    str += ch;  // Append character to string
}

Do note that not much of this is really needed as shown in the answer by Stack Danny. Even my code above could be simplified while still reading one character at a time.

like image 110
Some programmer dude Avatar answered Sep 28 '22 07:09

Some programmer dude


Since you tagged your question as C++ (and not C) why not actually solve it with the modern C++ headers (that do exactly what you want, are tested, save and work really fast (rather than own functions))?

#include <string>
#include <algorithm>
#include <iostream>

int main(){
    std::string str;
    std::cout << "Enter a string: ";
    std::getline(std::cin, str);

    std::reverse(str.begin(), str.end());

    std::cout << str << std::endl;

    return 0;
}

output:

Enter a string: Hello Test 4321
1234 tseT olleH
like image 26
Stack Danny Avatar answered Sep 28 '22 07:09

Stack Danny