C++ 处理数字的流对象

C++ 处理数字的流对象,c++,stl,stream,bytestream,C++,Stl,Stream,Bytestream,这可能是一个非常基本的问题,但在深入研究STL参考资料时,我找不到任何合适的方法。例如 std::ostringstream oss; oss << "One hundred and one: " << 101; 将导致字节或字符串缓冲区不包含10、0和15的文本表示,而只包含这三个数字 你知道这可以用什么吗?这个语义(流插入):不,没有 从您的示例来看,似乎希望用整数填充整数向量 您将需要一个函子(ostream操纵器),它将类似ostream的语义转换为向量元素加法

这可能是一个非常基本的问题,但在深入研究STL参考资料时,我找不到任何合适的方法。例如

std::ostringstream oss;
oss << "One hundred and one: " << 101;
将导致字节或字符串缓冲区不包含
10
0
15
的文本表示,而只包含这三个数字

你知道这可以用什么吗?

这个语义(流插入):不,没有

从您的示例来看,似乎希望用整数填充整数向量

您将需要一个函子(ostream操纵器),它将类似ostream的语义转换为向量元素加法

大致如下:

struct functor {
   functor(std::vector<int>& viref):
      myVector(viref)
   {}
   // this operator overload translates stream-insert operator
   // into vector element addition
   functor& operator<<(const int i) {
      myVector.push_back(i);
      return *this;
   }
   std::vector<int>& myVector;
};

int main() {
   std::vector<int>   vi;
   functor            f( vi );

   f << 1 << 2 << 3;
}
结构函子{ 函子(std::vector和viref): myVector(viref) {} //此运算符重载转换流插入运算符 //矢量元素加法
函子和运算符包含整数序列的缓冲区就是
std::vector
控制


您可以覆盖全局运算符
听起来像是可以先使用
vector
存储数据。有关允许速记插入向量的库,请参阅。您到底为什么要这样做?
struct functor {
   functor(std::vector<int>& viref):
      myVector(viref)
   {}
   // this operator overload translates stream-insert operator
   // into vector element addition
   functor& operator<<(const int i) {
      myVector.push_back(i);
      return *this;
   }
   std::vector<int>& myVector;
};

int main() {
   std::vector<int>   vi;
   functor            f( vi );

   f << 1 << 2 << 3;
}
#include <vector>
#include <iostream>

std::vector<int> & operator<<(std::vector<int> & vi, int i)
{
    vi.push_back(i);
    return vi;
}

int main()
{
    std::vector<int> vi;
    vi << 1 << 2 << 3;
    for(auto i : vi) {
        std::cout << i << std::endl;
    }
    return 0;
}
si.push_back(i);
si.push_back(i);
si.push_back(j);
si.push_back(k);
si << i << j << k;
void push_back(std::vector<int> & vi){}

template<typename ...Ts>
void push_back(std::vector<int> & vi, int i, Ts... ts)
{
    vi.push_back(i);
    if (sizeof...(Ts)) {
        push_back(vi,ts...);
    }
}
push_back(si,i,j,k);
si << i << j << k;