0

I have the following file:

BB 7.501106 5.324115 7.997006 8.287983 11.314904 11.768281 ... 

And i am 100% sure that the file is ok, i have even shown newlines in vim with :set list :

BB$ 7.501106 5.324115$ 7.997006 8.287983$ 11.314904 11.768281$ ... 

But when i open and read in the first line something wierd happens. I have the following code:

std::ifstream file(filename); std::string line; if (!file.is_open()) { std::cerr << "parseConfig: Error opening config file: " << filename << std::endl; exit(1); } getline(file, line); std::cout << "line is: <" << line << ">" << std::endl; if (line.compare("BB")) { std::cerr << "parseConfig: Error in config file, first line is not BB" << std::endl; exit(1); } 

Now i know the file is being opened correctly because we get all the way to the final error.

The print out is as following:

>ine is: <BB //What!!!?? Why did this happen? parseConfig: Error in config file, first line is not BB 

Which strikes me as odd, its as if there is a carriage return in the text file. But i am so sure that there is not.

Any ideas?

1 Answer 1

3

It looks like the file is in DOS mode. Check if vim displays [dos] at the bottom, or check file yourfile.txt.

Another way to check is by piping the file or the output of your program through cat -A (or cat -v if your cat doesn't have -A). Carriage returns will show up as ^M.

To convert to UNIX format, do :set ff=unix in vim and then save the file. Or use the dos2unix command-line tool if you have it.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.