+ 1
C++ iomanip count setw, extra newlines under Windows
I wrote some c++ code under Linux environment and the output to console via cout I formatted to look nice with iomanip using setw() and endl etc. I just compiled the same code under Windows and ran it and it's like there's an extra newline at every endl call. I think this is the \r\n vs \n newline situation. What are options for getting the same formatting for output across both platforms?
4 Answers
+ 4
this is the only reason c++ has the std::endl. If you want your program set the correct new line for every OS you must use this
+ 1
it doesn't seem to make a difference to the output if I change to using all endl for newlines.
if (switchName == "-h" || switchName == "--help") { 
            cout << left << endl
                 << "Usage: " << argv[0] << " [-x] inputFilename.pdf" << endl << endl
                 << "\tConverts PDF file data to different format based on configured template settings." << endl
                 << "\tFor more information about configuring templates, see: https://github.com/Cabji/flip/README.md" << endl << endl
                 << "\tSwitches:" << endl << endl
                 << setw(25) << "\t  -h --help"         << setw(100) << "Displays help message" << endl
                 << setw(25) << "\t  -o outputFileName" << setw(100) << "Set output filename to use (./output.txt will be used if not provided)" << endl
                 << setw(25) << "\t  -t templateName"   << setw(100) << "Set template to use" << endl
                 << setw(25) << "\t  -v --version"      << setw(100) << "Display flip-cpp version" << endl
                 << endl;
            return 0;        
        }
Outputs: 
Usage: main [-x] inputFilename.pdf
        Converts PDF file data to different format based on configured template settings.
        For more information about configuring templates, see: https://github.com/Cabji/flip/README.md
        Switches:
          -h --help             Displays help message
          -o outputFileName     Set output filename to use (./output.txt will be used if not provided)
          -t templateName       Set template to use
          -v --version          Display flip-cpp version
Extra blank lines between each switch description line. Only shows like this under Windows, on Linux it doesn't have the extra blank lines.
+ 1
if you still having issue, there are some things you can try to debug this issue.
A good practice when you tried everything and still haven't identify the bug, is to keep a backup of source and then start removing rest code until you end up with the minimum code that still behaves weird. You will have to investigate a smaller source and at some point you will find it.
In the past when i used options for printing like setw, my code behave weird sometimes. You can try print the new line in a different instruction like this:
cout << setw(25) << "something";
cout << endl;
Pretty sure it's due to setw(). Splitting your print to many parts, it may solve the problem
0
@john ds
ok thank you. i am using a combination of \n and endl in that portion of the code. so endl is the best way to get cross platform conformance!





