views:

82

answers:

2

Trying to get some basic understanding of console functionalities. I am having issues so consider the following...

#include "stdafx.h"
#include<iostream>
#include<conio.h>

using namespace std;

/*
This is a template Project
*/

void MultiplicationTable(int x);

int main()
{

    int value = 0;

    printf("Please enter any number \n\n");
    getline(cin, value);

    MultiplicationTable(value);


    getchar();


    return 0;
}

I actually based this off code from http://www.cplusplus.com/doc/tutorial/basic_io/ . My IDE is not recognizing getline() so of course when I compile the application. I get an error

'getline': identifier not found

Now take a look at this code

#include "stdafx.h"
#include<iostream>
#include<conio.h>

using namespace std;

/*
This is a template Project
*/

void MultiplicationTable(int x);

int main()
{

    int value = 0;

    printf("Please enter any number \n\n");
    cin>>value;

    MultiplicationTable(value);


    getchar();


    return 0;
}

When I execute this line of code the console window opens and immediately closes. I think I a missing something about cin. I do know that it delimits spaces but I don't know what else. what should I use for input to make my life easier.

+1  A: 

The function getline() is declared in the string header. So, you have to add #include <string>. It is defined as istream& getline ( istream& is, string& str );, but you call it with an int instead of a string object.

About your second question:

When I execute this line of code the console window opens and immediately closes

There is probably still a '\n' character from your input in the stream, when your program reaches the function getchar() (which I assume you put there so your window doesn't close). You have to flush your stream. An easy fix is, instead of getchar(), add the line

 int c;
 while((c = getchar()) != '\n'){} 

This will flush your stream until the next line-break.

Remark: conio.h is not part of the c++ standard and obsolete.

Lucas
thanks. I am really confused with this iostream. I have ran into previous problems where characters were still in the iostream and therefore the application did not function correctly. Is there any resources or anything you can say about how to address those types of issues ??
numerical25
+2  A: 

The getline function reads strings, not integers:

#include <string>
#include <iostream>
using namespace std;

int main() {
    string line;
    getline( cin, line );
    cout << "You entered: " << line << endl;
}
anon
ok thanks. But What the cin code. why does it cut out for ??
numerical25
@numerical You will have to rephrase that.
anon
The second code I have uses the cin functionality. If you run that code in your compiler. It executes and then ends immediately. It doesnt leave me the time to input anything or do anything at that.
numerical25
@numerical I think you are asking a question regarding your IDE - which one are you using? In other words, how are you compiling and running this code?
anon