8

私は変数を持っています:

string item;

実行時に初期化されます。longに変換する必要があります。どうやってするの?atol()とstrtol()を試しましたが、strtol()とatol()でそれぞれ次のエラーが発生します。

cannot convert 'std::string' to 'const char*' for argument '1' to 'long int strtol(const char*, char**, int)'

cannot convert 'std::string' to 'const char*' for argument '1' to 'long int atol(const char*)'
4

5 に答える 5

23

c ++ 11:

long l = std::stol(item);

http://en.cppreference.com/w/cpp/string/basic_string/stol

C ++ 98:

char * pEnd;.
long l = std::strtol(item.c_str(),&pEnd,10);

http://en.cppreference.com/w/cpp/string/byte/strtol

于 2012-08-02T11:11:52.673 に答える
21

このようにしてみてください:

long i = atol(item.c_str());
于 2012-08-02T11:12:01.513 に答える
6

文字列ストリームを使用します。

#include <sstream>

// code...
std::string text;
std::stringstream buffer(text);
long var;
buffer >> var;
于 2012-08-02T11:14:38.087 に答える
5

std ::stol <文字を使用してスペースを埋める>

于 2012-08-02T11:12:52.340 に答える
2

C ++ 11にアクセスできず、Boostライブラリを使用できる場合は、次のオプションを検討できます。

long l = boost::lexical_cast< long >( item );
于 2012-08-02T12:32:57.457 に答える