20

std::string格納されている astd::vectorを整数に変換し、それをパラメーターとして関数に渡そうとしています。

これは私のコードの簡略版です:

vector <string> record;
functiontest(atoi(record[i].c_str));

私のエラーは次のとおりです。

error: argument of type ‘const char* (std::basic_string<char, std::char_traits<char>, std::allocator<char> >::)()const’ does not match ‘const char*’

これどうやってするの?

4

4 に答える 4

43

C++11 の場合:

int value = std::stoi(record[i]);
于 2012-09-27T19:37:11.810 に答える
11
record[i].c_str

と同じではありません

record[i].c_str()

エラーメッセージから実際にこれを得ることができます: 関数は a を期待していますが、 a を返し、引数を取らないクラスのメンバー関数へのポインターであるconst char*型の引数を提供しています。const char* (std::basic_string<char, std::char_traits<char>, std::allocator<char> >::)()conststd::basic_string<char, std::char_traits<char>, std::allocator<char> >const char*

于 2012-09-27T19:07:39.517 に答える
11

標準ライブラリの stringstream を使用します。よりクリーンで、C というよりも C++ です。

int i3;
std::stringstream(record[i]) >> i3; 
于 2012-09-27T19:11:41.273 に答える
0
#include <boost/lexical_cast.hpp>

functiontest(boost::lexical_cast<int>(record[i]));
于 2015-09-15T11:39:53.560 に答える