strtol-Problem
-
Hallo,
ich hab folgenden Quelltext:
#include <stdlib.h> #include <stdio.h> #include <time.h> #include <string> using namespace std; long __declspec (dllexport) __stdcall test( char *arrValue1,long arr1Elements, char *arrValue2,long arr2Elements, char *arrResult,long arr3Elements) { long i; char *test; string s = arrValue1; s = s.substr(2,1); i = strtol(s, test, 1); return i; }
Das Problem liegt darin, dass in der Zeile
i = strtol(s, test, 1);
ein Fehler kommt, scheinbar weil s kein char* ist.
Ich weiß aber auch nicht wie ich es anders machen soll. Kann mir jemand helfen?Danke, Rico.
-
string s; ... s.c_str() // liefert einen const char *
Aber eine Basis von eins, das halt ich für unwahrscheinlich.
-
An den Pointer kommst Du mit
s.c_str(), außerdem muß die Adresse des Pointers übergeben werden, also &test.
Zuguterletzt mußt Du auch die Basis richtig angeben. 1 scheint wohl nicht sinnvoll zu sein. Es gibt kein Einsersystem.Der Aufruf müßte also irgendwie so heißen:
const int BASE=10;
i = strtol(s.c_str(), &test, BASE);Allerdings ist das ganze mehr C als C++.
Wenn Du nur 10er oder 16er-System hast, dann kannst Du das ganze in meinen Augen viel einfacher mit stringstreams machen.
AFAIK dürfte sich auch boost::lexical_cast eignen.MfG Jester