fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <ctime>
  4. #include <map>
  5. #include <limits>
  6. using namespace std;
  7.  
  8. template< char C >
  9. std::istream& skip( std::istream& in )
  10. {
  11. return in.ignore( std::numeric_limits< std::streamsize >::max(), C );
  12. }
  13.  
  14. struct opt // opt für optional; liest ein int, wenn eine Zahl kommt, sonst wird der Wert =0 gesetzt
  15. {
  16. explicit opt( int& value )
  17. : value_( value )
  18. {}
  19. friend std::istream& operator>>( std::istream& in, opt & o ) // Lesefunktion für den Wrapper 'opt'
  20. {
  21. char c;
  22. if( in >> c && in.putback( c ) ) // lese das nächste Zeichen 'c' und stelle es auch gleich zurück!
  23. {
  24. if( ('0' <= c && c <= '9') || c == '-' || c == '+' ) // könnte eine Zahl sein
  25. in >> o.value_; // dann lese die Zahl
  26. else
  27. o.value_ = 0; // sonst definiert auf 0 setzen
  28. }
  29. return in;
  30. }
  31. private:
  32. int& value_;
  33. };
  34.  
  35. int main()
  36. {
  37. map<string, int> m; // Variablen so lokal wie möglich anlegen
  38.  
  39. std::istream & log = std::cin;
  40.  
  41. string name1;
  42. int value;
  43. string dpsorheal; //<-- hier optional lesen -->
  44. // Format: " <Zeit> | <name1> | <name2> |<skillname> | [<value>] | <dpsorheal> | ..Rest..EOL"
  45. while( getline( getline( log >> skip<'|'>, name1, '|' ) >> skip<'|'> >> skip<'|'> >> opt(value) >> skip<'|'>, dpsorheal, '|' ) >> skip<'\n'> )
  46. { // usw.
  47. m[name1]+=value;
  48. }
  49.  
  50. for(map<string, int>::iterator iter=m.begin(); iter!=m.end(); ++iter)
  51. {
  52. cout << iter->first << " = " << iter->second << endl;
  53. }
  54.  
  55. return 0;
  56. }
  57.  
  58.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
21:39:51.992|Respektlos|Tobiasvon|Salvation|1295|H|
21:39:51.992|Respektlos|Schlitzohr|Salvation|725|H|
21:39:52.271|Respektlos|Tribunus|Rejuvenate|760|H|
21:39:53.007|Tobia|Eleraana|Salvation|725|H|
21:39:53.007|Tobi|Racta|Salvation|1283|H|
21:39:53.007|Tobi|Sephone|Salvation|1283|H|
21:39:53.007|Respektlos|Respektlos|Salvation|783|H|
21:39:53.008|Respektlos|Tribunus|Salvation|1258|H|
21:39:53.008|Tobi|Tobiasvon|Salvation|747|H|
21:39:53.008|Tobi|Schlitzohr|Salvation|725|H|
21:39:54.074|Respektlos|Racta|Salvation|1283|H|
21:39:54.074|Respektlos|Eleraana|Salvation|725|H|
21:39:54.074|Respektlos|Sephone|Salvation|740|H|
21:39:54.075|Respektlos|Respektlos|Salvation|1357|H|
21:39:54.075|Respektlos|Tribunus|Salvation|725|H|
21:39:54.075|Respektlos|Tobi|Salvation|747|H|
21:39:54.075|Respektlos|Schlitzohr|Salvation|725|H|
21:39:54.305|Respektlos|Respektlos|ExitCombat||EC|
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:45:87: error: no match for ‘operator>>’ (operand types are ‘std::basic_istream<char>::__istream_type {aka std::basic_istream<char>}’ and ‘opt’)
     while( getline( getline( log >> skip<'|'>, name1, '|' ) >> skip<'|'> >> skip<'|'> >> opt(value) >> skip<'|'>, dpsorheal, '|' ) >> skip<'\n'> )
                                                                                       ^
prog.cpp:45:87: note: candidates are:
In file included from /usr/include/c++/4.8/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/4.8/istream:120:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__istream_type& (*)(std::basic_istream<_CharT, _Traits>::__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(__istream_type& (*__pf)(__istream_type&))
       ^
/usr/include/c++/4.8/istream:120:7: note:   no known conversion for argument 1 from ‘opt’ to ‘std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&) {aka std::basic_istream<char>& (*)(std::basic_istream<char>&)}’
/usr/include/c++/4.8/istream:124:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__ios_type& (*)(std::basic_istream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]
       operator>>(__ios_type& (*__pf)(__ios_type&))
       ^
/usr/include/c++/4.8/istream:124:7: note:   no known conversion for argument 1 from ‘opt’ to ‘std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios_type&) {aka std::basic_ios<char>& (*)(std::basic_ios<char>&)}’
/usr/include/c++/4.8/istream:131:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(ios_base& (*__pf)(ios_base&))
       ^
/usr/include/c++/4.8/istream:131:7: note:   no known conversion for argument 1 from ‘opt’ to ‘std::ios_base& (*)(std::ios_base&)’
/usr/include/c++/4.8/istream:168:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(bool& __n)
       ^
/usr/include/c++/4.8/istream:168:7: note:   no known conversion for argument 1 from ‘opt’ to ‘bool&’
/usr/include/c++/4.8/istream:172:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]
       operator>>(short& __n);
       ^
/usr/include/c++/4.8/istream:172:7: note:   no known conversion for argument 1 from ‘opt’ to ‘short int&’
/usr/include/c++/4.8/istream:175:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(unsigned short& __n)
       ^
/usr/include/c++/4.8/istream:175:7: note:   no known conversion for argument 1 from ‘opt’ to ‘short unsigned int&’
/usr/include/c++/4.8/istream:179:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]
       operator>>(int& __n);
       ^
/usr/include/c++/4.8/istream:179:7: note:   no known conversion for argument 1 from ‘opt’ to ‘int&’
/usr/include/c++/4.8/istream:182:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(unsigned int& __n)
       ^
/usr/include/c++/4.8/istream:182:7: note:   no known conversion for argument 1 from ‘opt’ to ‘unsigned int&’
/usr/include/c++/4.8/istream:186:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(long& __n)
       ^
/usr/include/c++/4.8/istream:186:7: note:   no known conversion for argument 1 from ‘opt’ to ‘long int&’
/usr/include/c++/4.8/istream:190:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(unsigned long& __n)
       ^
/usr/include/c++/4.8/istream:190:7: note:   no known conversion for argument 1 from ‘opt’ to ‘long unsigned int&’
/usr/include/c++/4.8/istream:195:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(long long& __n)
       ^
/usr/include/c++/4.8/istream:195:7: note:   no known conversion for argument 1 from ‘opt’ to ‘long long int&’
/usr/include/c++/4.8/istream:199:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(unsigned long long& __n)
       ^
/usr/include/c++/4.8/istream:199:7: note:   no known conversion for argument 1 from ‘opt’ to ‘long long unsigned int&’
/usr/include/c++/4.8/istream:214:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(float& __f)
       ^
/usr/include/c++/4.8/istream:214:7: note:   no known conversion for argument 1 from ‘opt’ to ‘float&’
/usr/include/c++/4.8/istream:218:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(double& __f)
       ^
/usr/include/c++/4.8/istream:218:7: note:   no known conversion for argument 1 from ‘opt’ to ‘double&’
/usr/include/c++/4.8/istream:222:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(long double& __f)
       ^
/usr/include/c++/4.8/istream:222:7: note:   no known conversion for argument 1 from ‘opt’ to ‘long double&’
/usr/include/c++/4.8/istream:235:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]
       operator>>(void*& __p)
       ^
/usr/include/c++/4.8/istream:235:7: note:   no known conversion for argument 1 from ‘opt’ to ‘void*&’
/usr/include/c++/4.8/istream:259:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]
       operator>>(__streambuf_type* __sb);
       ^
/usr/include/c++/4.8/istream:259:7: note:   no known conversion for argument 1 from ‘opt’ to ‘std::basic_istream<char>::__streambuf_type* {aka std::basic_streambuf<char>*}’
In file included from /usr/include/c++/4.8/string:53:0,
                 from /usr/include/c++/4.8/bits/locale_classes.h:40,
                 from /usr/include/c++/4.8/bits/ios_base.h:41,
                 from /usr/include/c++/4.8/ios:42,
                 from /usr/include/c++/4.8/ostream:38,
                 from /usr/include/c++/4.8/iostream:39,
                 from prog.cpp:1:
/usr/include/c++/4.8/bits/basic_string.tcc:996:5: note: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&)
     operator>>(basic_istream<_CharT, _Traits>& __in,
     ^
/usr/include/c++/4.8/bits/basic_string.tcc:996:5: note:   template argument deduction/substitution failed:
prog.cpp:45:99: note:   ‘opt’ is not derived from ‘std::basic_string<_CharT, _Traits, _Alloc>’
     while( getline( getline( log >> skip<'|'>, name1, '|' ) >> skip<'|'> >> skip<'|'> >> opt(value) >> skip<'|'>, dpsorheal, '|' ) >> skip<'\n'> )
                                                                                                   ^
In file included from /usr/include/c++/4.8/istream:879:0,
                 from /usr/include/c++/4.8/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/4.8/bits/istream.tcc:955:5: note: template<class _CharT2, class _Traits2> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT2*)
     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
     ^
/usr/include/c++/4.8/bits/istream.tcc:955:5: note:   template argument deduction/substitution failed:
prog.cpp:45:99: note:   mismatched types ‘_CharT2*’ and ‘opt’
     while( getline( getline( log >> skip<'|'>, name1, '|' ) >> skip<'|'> >> skip<'|'> >> opt(value) >> skip<'|'>, dpsorheal, '|' ) >> skip<'\n'> )
                                                                                                   ^
In file included from /usr/include/c++/4.8/istream:879:0,
                 from /usr/include/c++/4.8/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/4.8/bits/istream.tcc:923:5: note: template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&)
     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
     ^
/usr/include/c++/4.8/bits/istream.tcc:923:5: note:   template argument deduction/substitution failed:
prog.cpp:45:99: note:   deduced conflicting types for parameter ‘_CharT’ (‘char’ and ‘opt’)
     while( getline( getline( log >> skip<'|'>, name1, '|' ) >> skip<'|'> >> skip<'|'> >> opt(value) >> skip<'|'>, dpsorheal, '|' ) >> skip<'\n'> )
                                                                                                   ^
In file included from /usr/include/c++/4.8/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/4.8/istream:727:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)
     operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
     ^
/usr/include/c++/4.8/istream:727:5: note:   template argument deduction/substitution failed:
prog.cpp:45:99: note:   cannot convert ‘opt((* & value))’ (type ‘opt’) to type ‘unsigned char&’
     while( getline( getline( log >> skip<'|'>, name1, '|' ) >> skip<'|'> >> skip<'|'> >> opt(value) >> skip<'|'>, dpsorheal, '|' ) >> skip<'\n'> )
                                                                                                   ^
In file included from /usr/include/c++/4.8/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/4.8/istream:732:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&)
     operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
     ^
/usr/include/c++/4.8/istream:732:5: note:   template argument deduction/substitution failed:
prog.cpp:45:99: note:   cannot convert ‘opt((* & value))’ (type ‘opt’) to type ‘signed char&’
     while( getline( getline( log >> skip<'|'>, name1, '|' ) >> skip<'|'> >> skip<'|'> >> opt(value) >> skip<'|'>, dpsorheal, '|' ) >> skip<'\n'> )
                                                                                                   ^
In file included from /usr/include/c++/4.8/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/4.8/istream:774:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*)
     operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
     ^
/usr/include/c++/4.8/istream:774:5: note:   template argument deduction/substitution failed:
prog.cpp:45:99: note:   cannot convert ‘opt((* & value))’ (type ‘opt’) to type ‘unsigned char*’
     while( getline( getline( log >> skip<'|'>, name1, '|' ) >> skip<'|'> >> skip<'|'> >> opt(value) >> skip<'|'>, dpsorheal, '|' ) >> skip<'\n'> )
                                                                                                   ^
In file included from /usr/include/c++/4.8/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/4.8/istream:779:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char*)
     operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
     ^
/usr/include/c++/4.8/istream:779:5: note:   template argument deduction/substitution failed:
prog.cpp:45:99: note:   cannot convert ‘opt((* & value))’ (type ‘opt’) to type ‘signed char*’
     while( getline( getline( log >> skip<'|'>, name1, '|' ) >> skip<'|'> >> skip<'|'> >> opt(value) >> skip<'|'>, dpsorheal, '|' ) >> skip<'\n'> )
                                                                                                   ^
In file included from /usr/include/c++/4.8/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/4.8/istream:872:5: note: std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&&, _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = opt]
     operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x)
     ^
/usr/include/c++/4.8/istream:872:5: note:   no known conversion for argument 2 from ‘opt’ to ‘opt&’
prog.cpp:19:26: note: std::istream& operator>>(std::istream&, opt&)
     friend std::istream& operator>>( std::istream& in, opt & o ) // Lesefunktion für den Wrapper 'opt'
                          ^
prog.cpp:19:26: note:   no known conversion for argument 2 from ‘opt’ to ‘opt&’
stdout
Standard output is empty