如何将一个整数字符串转换为一个充满int的向量?

use*_*269 4 c++ vector

我知道有关同样事情的其他问题,但是,我已经使用其他资源来提出我现在所拥有的内容,并且我得到了一个我似乎无法弄清楚的错误.另外,请记住我是一名c ++初学者.话虽这么说,我有一个非常大的字符串填充整数格式如下:( newString = "12 -34 50 2 -102 13 78 9"实际的字符串要大得多).然后我尝试创建一个函数,transform()用于将字符串转换为int的向量:

int convertString(){

    istringstream is(newString);
    vector<int> intVector;
    transform(istream_iterator<string>( is ),
              istream_iterator<string>(),
              back_inserter( intVector ),
              []( const string &newString ){ return ( stoi( newString ) ); } );//This is the line indicated in the error!
    for(int x : intVector )
        cout << x << ' '<<endl;

    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

我得到的错误是在指示的错误行上有一个预期的表达式...任何想法如何解决这个问题?

在此先感谢您,如果有什么不清楚的话请告诉我!

Jer*_*fin 7

假设您已经合理地确定输入仅包含正确格式化的ints,(或者只有在遇到除可读整数之外的其他内容时才会停止读取),transform这里不需要- 它istream_iterator本身可以很好地处理转换.您可以直接从迭代器初始化向量,给出如下代码:

std::istringstream is(newString);
std::vector<int> intVector { std::istream_iterator<int>(is), 
                             std::istream_iterator<int>()};
Run Code Online (Sandbox Code Playgroud)

这在一个方面与你的版本不同:如果你给它一个字符串stoi它不能转换为整数,它会抛出一个异常 - invalid_argument如果它包含类似的东西ac;根本不能转换为整数,或者out_of_range如果它包含50位数字,则会产生不适合目标类型的结果.