将std :: string转换为整数

Dan*_*ore 18 c++ string int atoi

我正在尝试将std::string存储的a std::vector转换为整数并将其作为参数传递给函数.

这是我的代码的简化版本:

vector <string> record;
functiontest(atoi(record[i].c_str));
Run Code Online (Sandbox Code Playgroud)

我的错误如下:

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

我怎样才能做到这一点?

Pet*_*ker 37

使用C++ 11:

int value = std::stoi(record[i]);
Run Code Online (Sandbox Code Playgroud)

  • **读者要注意:**如果你不是100%确定`std :: stoi`的输入**将永远是一个有效的整数**,你需要设置`try/catch`为`的std :: invalid_argument`. (17认同)
  • 非常有帮助.对于低于C++ 11,有什么可靠的例子吗? (4认同)
  • 也适用于 `std::out_of_range`。 (2认同)

Ind*_*000 12

使用标准库中的stringstream.它更干净,而且比C更C++.

int i3;
std::stringstream(record[i]) >> i3; 
Run Code Online (Sandbox Code Playgroud)


Luc*_*ore 11

record[i].c_str
Run Code Online (Sandbox Code Playgroud)

是不一样的

record[i].c_str()
Run Code Online (Sandbox Code Playgroud)

你实际上可以从错误消息中得到这个:函数需要a const char*,但你提供的const char* (std::basic_string<char, std::char_traits<char>, std::allocator<char> >::)()const是一个类型的参数,它是一个指向std::basic_string<char, std::char_traits<char>, std::allocator<char> >返回a const char*且不带参数的类的成员函数的指针.