无法在C ++中将整数字符串转换为整数

时间:2014-11-21 10:45:19

标签: c++ atoi

我目前手头有一个类,User :: User(字符串id,字符串评级)。 我正在尝试当前存储字符串" 1 5 5 3 0 -5 0 5" (这是评级的参数,已经处理了id)到一个不能改变的向量中,称为向量(int)< - 整数等级作为字符串中看到的8个整数的向量。迭代此字符串并存储单个值(包括底片)的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

#include <sstream>
#include <vector>
#include <iostream>

int main()
{
    std::istringstream is("1 5 5 3 0 -5 0 5");
    std::vector<int> v;

    int n;
    while (is >> n)
        v.push_back(n);

    for (size_t i = 0; i < v.size(); i++)
        std::cout << v[i] << '\n';

    return 0;
}

答案 1 :(得分:2)

此问题是stream iterators

的规范用例
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>


int main()
{
  std::istringstream iss{ "1 5 5 3 0 -5 -5" };
  std::vector< int > v;

  std::copy( std::istream_iterator< int >{ iss },
             std::istream_iterator< int >{},
             std::back_inserter( v ) );

  std::copy( std::begin( v ),
             std::end( v ),
             std::ostream_iterator< int >( std::cout, " " ) );
}