Mac Stringstream returns wrong output
-
@fcarney
Agree and have begun to take baby steps with linux (ubunto).
I was dedcated windows user some years ago (before windows 8) and have worked on windows machines afterwards continued.
regarding my school work i have found a windows machine for the moment.
BUT. I am still detement to make it work on mac os. I'm really tired of hearing people say you can't be an engineer with a mac.and I'm really happy with my mac :(
And although I have a windows machine it doesn't help the others in my class with the same problem (mac user) -
@Bugi said in Mac Stringstream returns wrong output:
I'm really tired of hearing people say you can't be an engineer with a mac.
The guy I share an office with is an electrical engineer (30+ years), he is a good programmer, uses a Mac, but runs most of his analysis software and programming tools on a VM running Windows 10. I run Linux and use a VM to run Windows 10 for doing Windows development in Qt. Most of my time is in Linux though. So, there is nothing wrong with a Mac. However, no matter what you run, you will probably need a VM to run something else. Or your boss will make a decision that forces you to run a VM. Its just how it goes.
-
@Bugi said in Mac Stringstream returns wrong output:
Okay maybe we found something here ...
but since I still have very little code experience I don't know if it is something or not... Or for that matter what it meansIt means one of two things:
- You're reading past the end of stream.
- You're reading formatted input (the
>>
operators), which is not formatted according to the expectation; i.e. there's something wrong while reading from the stream.
-
just for grins...please replace std:stringtream with std::istringstream and retest. Since you are only using the stream for input, you should use the istream specialization intended for that purpose.
-
@Bugi said in Mac Stringstream returns wrong output:
ios_base::clear: unspecified iostream_category error libc++abi.dylib: terminating with uncaught exception of type std::__1::ios_base::failure: ios_base::clear: unspecified iostream_category error
Someone found a bug in clang's stringstream exception detection before (http://clang-developers.42468.n3.nabble.com/libc-ios-base-and-exceptions-td4038960.html ); it's quite possible that your compiler has a buggy implementation of stringstream. This would explain why everyone on this forum was unable to reproduce your issue, yet all 6 macOS users in your class have the same issue.
Unless you have a way to try a different compiler on your macOS, you'll have a hard time proving or disproving that the bug is in your compiler.
Does this exercise require you to use stringstream? If not, try a different way of parsing the string.
-
Anyway, in situations like this, it is useful to create minimal test cases to investigate the issue.
int main() { std::string pstr = "22x^3+2x^2-1x^0"; std::stringstream ss(pstr); double coeff = -42.0; ss >> coeff; std::cout << coeff << std::endl; }
What does this print for you? If it's the wrong value, what happens if you replace pstr with "22"?
-
@JKSH said in Mac Stringstream returns wrong output:
Unless you have a way to try a different compiler on your macOS, you'll have a hard time proving or disproving that the bug is in your compiler.
However, it would be wise to update Xcode to the latest available version before investigating further