istringstream-function string_to_int不能带c-str,为什么?

时间:2018-02-10 03:24:39

标签: c++ visual-studio c-strings istringstream

我学会了一个可以将字符串转换为整数的辅助函数:

int string_to_int(string s)
{
    istringstream instr(s);
    int n;
    instr>>n;
    return n;
}

它提到参数s不能是c-str字符串,为什么会这样?

1 个答案:

答案 0 :(得分:0)

但你可以传递一个C风格的字符串。

原因是std::string constructor可以隐式接受CharT*(Char类型,在本例中为char)作为参数。因此,类似下面的内容可行:

#include <iostream>
#include <sstream>

using namespace std;

int string_to_int(string s)
{
    istringstream instr(s);
    int n;
    instr>>n;
    return n;
}

int main()
{
    const char* test = "12345";
    std::cout << string_to_int(test) << "\n"; // Outputs 12345
    std::cout << string_to_int("122") << "\n"; // Outputs 122
}