Sign in to follow this  
Followers 0
Stickmunkee

Simple Vector list problem

6 posts in this topic

I'm beginning in C++ and am working my way through a book to learn it. I've come across a simple problem I don't know how to fix.

The program is a simple system where you type in the title of a game, which the computer adds to a list and then shows you the list.

The issue is: If you enter a title like "Unreal Tournament" it treats "Unreal" and "Tournament" as separate titles like this:

Unreal

 

Tournament

.

I've tried different ways of using endl and \n in different locations, but that seems to bear no effect.

My question is, still using vectors, how can I get it to list multi-word titles correctly?

 

A separate issue I'm having is my attempt to add an "erase title" function. How can I get the program to search for a title input by the user and then remove that title?

0

Share this post


Link to post
Share on other sites

Instead of using cin >> var, use getline(cin,var).

 

Also, don't intermix the two, as this can lead to some confusing problems.

1

Share this post


Link to post
Share on other sites

The issue is: If you enter a title like "Unreal Tournament" it treats "Unreal" and "Tournament" as separate titles like this:

Use [tt]std::getline[/tt].

How can I get the program to search for a title input by the user and then remove that title?

Use [tt]std::find[/tt] to search your list, then use [tt]std::vector::erase[/tt] to erase that element from the vector.
1

Share this post


Link to post
Share on other sites

Code is typically represented in text in popular programming languages. Placing it in an image is not a good idea, because we cannot easily copy and paste the code onto our computers and try it out.

 

You can use [[size="1"][/size]code][[size="1"][/size]/code] tags around your code, which will present it in a nice syntax highlighted box:

#include <iostream>
 
int main() {
    std::cout << "Just like this!" << std::endl;
}
1

Share this post


Link to post
Share on other sites

I just wanted to expand on the "Use getline instead of "cin>>" answers.  While they're correct I feel it'd be appropriate to expand more on them so you know what is actually happening and why it is.

 

 cin extraction stops reading as soon as if finds any blank space character, so in this case we will be able to get just one word for each extraction. This behavior may or may not be what we want; for example if we want to get a sentence from the user, this extraction operation would not be useful.

In order to get entire lines, we can use the function getline, which is the more recommendable way to get user input with cin:

 

Example:

 

// cin with strings
#include <iostream>
#include <string>
using namespace std;

int main ()
{
string mystr;
cout << "What's your name? ";
getline (cin, mystr);
cout << "Hello " << mystr << ".\n";
cout << "What is your favorite team? ";
getline (cin, mystr);
cout << "I like " << mystr << " too!\n";
return 0;
 
 
output:
What's your name? Juan Soulie
Hello Juan Soulie.
What is your favorite team? The Isotopes
I like The Isotopes too!

 

 

using cin>> will leave what was left after the space you typed in the buffer.  So next time it is called it sees something in the buffer and reads it.

 

EDIT: This was taken from here: http://www.cplusplus.com/doc/tutorial/basic_io/

This should give you a good way of how C++ Console I/O works.

Edited by Chad Smith
1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0