I recently have to start working with c++ and having a lot of problems. my problem here is I need some functionality which are not supported by the same version of c++. For example the following code read a two column file, tokenize it, and store into dictionary :
map<int,int> ReadTables::lookupTable(string fpath) {
map<int,int> lookup;
ifstream in;
in.open(fpath.c_str());
if ( !in.good()) {
cout << "ERROR: Opening file failed.\n";
exit (EXIT_FAILURE);
}
string line;
const char delimiter[] = " ";
vector<string> tokens;
while (!in.eof()){
getline(in,line);
tokens = tokenize( line, delimiter );
lookup[ atoi(tokens[0].c_str())] = atoi(tokens[1].c_str());
//lookup[ stoi(tokens[0])] = stoi(tokens[1]);
}
This works fine as long as I don't use -std=c++0x
flag. When I use this version I got:
*** Break *** segmentation violation
===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0 0x00007fc4782270ee in waitpid () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fc4781b9e8e in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007fc47cb0a98e in TUnixSystem::StackTrace() () from /usr/local/lib/root/libCore.so
#3 0x00007fc47cb0a223 in TUnixSystem::DispatchSignals(ESignals) () from /usr/local/lib/root/libCore.so
#4 <signal handler called>
#5 0x00007fc478c64050 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x000000000040a83c in ReadTables::lookupTable (this=0x616500, fpath=...) at ../src/ReadTables.cpp:59
#7 0x000000000040ffd8 in main () at ../src/read.cpp:37
===========================================================
The lines below might hint at the cause of the crash.
If they do not help you then please submit a bug report at
http://root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#5 0x00007fc478c64050 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x000000000040a83c in ReadTables::lookupTable (this=0x616500, fpath=...) at ../src/ReadTables.cpp:59
#7 0x000000000040ffd8 in main () at ../src/read.cpp:37
==========================================================
I also realized in c11
I should use stoi
which again gives this error :
*** Break *** segmentation violation
===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0 0x00007f26561b50ee in waitpid () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007f2656147e8e in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007f265aa9898e in TUnixSystem::StackTrace() () from /usr/local/lib/root/libCore.so
#3 0x00007f265aa98223 in TUnixSystem::DispatchSignals(ESignals) () from /usr/local/lib/root/libCore.so
#4 <signal handler called>
#5 0x00007f2656bf2050 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x000000000040ac44 in std::stoi (__str=..., __idx=0x0, __base=10) at /usr/include/c++/4.4/bits/basic_string.h:2567
#7 0x000000000040a8e6 in ReadTables::lookupTable (this=0x616500, fpath=...) at ../src/ReadTables.cpp:62
#8 0x0000000000410178 in main () at ../src/read.cpp:37
===========================================================
The lines below might hint at the cause of the crash.
If they do not help you then please submit a bug report at
http://root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#5 0x00007f2656bf2050 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x000000000040ac44 in std::stoi (__str=..., __idx=0x0, __base=10) at /usr/include/c++/4.4/bits/basic_string.h:2567
#7 0x000000000040a8e6 in ReadTables::lookupTable (this=0x616500, fpath=...) at ../src/ReadTables.cpp:62
#8 0x0000000000410178 in main () at ../src/read.cpp:37
===========================================================
What I am missing here? And is there suggestion about which version to use?