What I am trying to do is to input a file LINE BY LINE and tokenize and output into an output file.What I have been able to do is input the first line in the file but my pro
The C++ String Toolkit Library (StrTk) has the following solution to your problem:
#include <iostream>
#include <string>
#include <deque>
#include "strtk.hpp"
int main()
{
std::deque<std::string> word_list;
strtk::for_each_line("data.txt",
[&word_list](const std::string& line)
{
const std::string delimiters = "\t\r\n ,,.;:'\""
"!@#$%^&*_-=+`~/\\"
"()[]{}<>";
strtk::parse(line,delimiters,word_list);
});
std::cout << strtk::join(" ",word_list) << std::endl;
return 0;
}
More examples can be found Here
You are using C runtime library when C++ makes this neater.
Code to do this in C++:
ifstream in; //delcraing instream
ofstream out; //declaring outstream
string oneline;
in.open("infile.txt"); //open instream
out.open("outfile.txt"); //opens outstream
while(getline(in, oneline))
{
size_t begin(0);
size_t end;
do
{
end = oneline.find_first_of(" ,", begin);
//outputs file into copy file
out << oneline.substr(begin,
(end == string::npos ? oneline.size() : end) - begin) << ' ';
begin = end+1;
//pointer moves to second token after first scan is over
}
while (end != string::npos);
}
in.close(); //closes in file
out.close(); //closes out file
Input:
a,b c
de fg,hijklmn
Output:
a b c de fg hijklmn
If you want newlines, add out << endl;
at the appropriate point.