I have a program showing error. How to resolve the error and to use ostream to display output
I use g++ compiler in my ubuntu
#include<iostream>
using namespace std;
int main()
{
ostream out;
out<<"Hello World";
}
The ostream that you want (attached to the display) has already been defined as cout.
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello World";
}
Not all ostreams send the stream to the terminal display.
std::ostream does not have a default constructor, this:
ostream out;
will be a compile time error.
You are probably wanting to use std::cout (as has already been stated).
Firstly, include #include <fstream> . Secondly, change ofstream out to ofstream out("file.txt") .
#include <iostream>
#include <fstream>
using namespace std;
int main () {
ofstream out ("c:\\test5.txt");
out<<"Hello World";
out.close();
return 0;
}
In order to do some output you need to get the right ostream. As Drew Dormann showed you, you can use std::cout for writing on standard output. You can also use std::cerr for the standard error, and finally you can instantiate your own fstream if you want, for instance, to write on a file.
#include <iostream>
#include <fstream>
int main()
{
std::fstream outfile ("output.txt", fstream::out);
outfile << "Hello World" << std::endl;
// Always close streams
outfile.close();
}
As side note: i suggest not to export the std namespace (use namespace std) in your programs (see this faq)
Related
Basically, I'm following a simple tutorial about files handling in C++.
I've been trying to create and write into a txt file at the same time, but any of the methods I've tried won't actually create a txt file in my executable location.
I should also say that, I print myfile.is_open() just to know if the file truly created and opened, but I get 0 everytime with every method.
What am I doing wrong ?
I mainly tried to create and write to a txt file like this:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream myfile;
myfile.open("example.txt", ios::out);
cout << myfile.is_open() << endl;
myfile << "Writing this to a file.\n";
myfile.close();
}
First, I bet you're using an IDE like Visual Studio. Most IDEs set your working directory somewhere other than your project directory. I don't use Visual Studio, but many of them put them in ../.
So your file is being produced, but not where you think you should find it.
If you compile and run this program without an IDE, you'll get your file where you expect it.
You may also be able to tell your IDE that the working directory should be your project directory.
Now, to keep you from making a few bad habits, I'm going to tell you two more things.
It's considered a mistake to do using namespace std. Instead, I do using statements only on those things I am going to use frequently. In your short code, I wouldn't have done any.
Next, if you're going to write out a file, it's better to use std::ofstream. It's otherwise the same code. But it's a bit clearer that you're only using the file for output.
So my version of your code:
#include <iostream>
#include <fstream>
int main()
{
std::ofstream myfile;
myfile.open("example.txt");
std::cout << myfile.is_open() << std::endl;
myfile << "Writing this to a file.\n";
myfile.close();
}
Yeah, those std:: everywhere can be annoying, so you could do this:
#include <iostream>
#include <fstream>
using std::ofstream;
using std::cout;
using std::endl;
int main()
{
ofstream myfile;
myfile.open("example.txt");
cout << myfile.is_open() << endl;
myfile << "Writing this to a file.\n";
myfile.close();
}
I actually have an include of CommonUsing.h that I put a few things I do almost everywhere.
#pragma once
#include <chrono>
#include <iostream>
#include <date/date.h>
//======================================================================
// The most common using statements I do in most of my code.
//======================================================================
using std::cout;
using std::cerr;
using std::endl;
using std::string;
using namespace std::chrono_literals;
using date::operator<<;
I want to open a file named 1.board by calling a function and use getline function to print it's characters to new line.But this is showing a lot of errors.
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using std::ifstream;
using std::cout;
using std::string;
using std::vector;
void ReadBoardFile(ifstream& search)
{
string line;
search.open("1.board");
while(getline("1.board",line))
{
cout<<line<<"\n";
}
}
int main() {
ifstream fin;
ReadBoardFile(fin);
}
I don't know what i'm doing wrong.I just can't find a perfect and exact answer.
Help,if you can.Thanku!!!!!
So here's your code rewritten so it works.
Two changes, first the first parameter to getline should be the stream you are reading from not the name of a file. I'm guessing that you just weren't concentrating when you wrote that.
Second change, I've moved the stream variable search so that it is local to your ReadBoardFile function. There's no reason in the code you've posted to pass that in as a parameter. You might want to pass the name of the file as a parameter, but I'll leave you to make that change.
void ReadBoardFile()
{
ifstream search("1.board");
string line;
while(getline(search,line))
{
cout<<line<<"\n";
}
}
int main() {
ReadBoardFile();
}
I'm trying to use the library ZBar to read QRCode with c++. I am not an expert about this language. I have the following problem:
#include <iostream>
#include <zbar.h>
using namespace std;
using namespace zbar;
int main()
{
cout << "Hello World!" << endl;
//Image image;
return 0;
}
This code does actually print the "Hello World" as expected. But if I remove the comment, obtaining the following code:
#include <iostream>
#include <zbar.h>
using namespace std;
using namespace zbar;
int main()
{
cout << "Hello World!" << endl;
Image image;
return 0;
}
Everything is still compiled correctly, with no errors or warnings, but I don't obtain any output!! The program reaches the end without executing any instruction!
I just used this code to semplify, but the problem actually is that, as soon as I add an instruction using classes from zbar, it seems like I am "clearing" the main! How is it possible? What should I do? Thank you!
In my code below errors occur and the program will not run, I am required to make a Constructor that must open the file with the given filename. If the filename does not exist then it Prints an error message and terminates the program.
Below is the code that I have done so far in C++:
#include "ReadWords.h"
#include <iostream>
#include <cstdlib>
using namespace std;
ReadWords::ReadWords(const char filename[])
{
wordfile.open(filename);
if (!wordfile)
{
cout << "cannot make " << filename << endl;
exit(1);
}
}
void ReadWords::close()
{
wordfile.close();
}
Why dont you try including fstream to the top of your file and see if that works
I suppose wordfile is of type std::fstream. If your ReadWords.h #includes <fstream>, it should work (compiles and works as expected).
By the way, it's a bad practice to use using namespace std;.
Also, since you use C++, take a look at std::string. It's safer than using plain char* or char[].
In objective-c it's easy. Although, in C, you have to call fopen, read, close and all of that jazz. How do you do it in C++?
just use the header fstream
example:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream file;
file.open("file.txt");
file << "Test!\n";
file.close()
return 0;
}