RaberSaber
RaberSaber

Reputation: 1

How to print multilple words in c++

I can get the file to save right but I can't seem to get multiple words to write to .txt, like if I type "Hi purple" it just writes "Hi", here is code

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    system("color F0");
    string name0;        
    cout << "Please enter a file name, no spaces/special characters" << endl;
    cin >> name0;
    name0 = name0+".txt";
    system("cls");
    cout << "            FISHSOFT" << endl;
    cout << "The best text editor in the world" << endl << endl;
    string text;
    cin >> text;
    ofstream myfile;
    myfile.open (name0.c_str() , ios::out | ios::trunc);
    myfile << text;
    myfile.close();
    system("PAUSE");
    return 0;
}

Upvotes: 0

Views: 79

Answers (4)

secretgenes
secretgenes

Reputation: 1290

There are 2 ways to get the string with spaces and special character.

  1. cin.getline(name);
  2. gets(name);

Hope this will serve your purpose.

Upvotes: 1

Adrian Maire
Adrian Maire

Reputation: 14855

std::cin is able to get several parameters at once.

That mean you may write:

std::cin >> name0 >> name1 >> name2;
// input: a1 a2 a3
// make: name0: a1, name1: a2, name3:a3

By default, the space is the separator between parameters.

To avoid this behavior, you could use getLine:

std::getline(std::cin, name0);

Upvotes: 2

user4581301
user4581301

Reputation: 33952

cin >> text; will read one whitespace delimited token from the input stream. One word in == one word out.

std::getline(cin, text); will read a whole line. Reading more than that is tricky, but typically a loop around multiple calls to getline.

Suggestion: Save yourself time and fire up your IDE's debugger to see what's happening in your code before posting a question. Almost always faster, and if not, you can make much better, tighter-focused questions.

Upvotes: 2

Christian Hackl
Christian Hackl

Reputation: 27538

Use std::getline to read an entire line of input including spaces.

Upvotes: 2

Related Questions