C++ 将字符串与std::stringstream中的破折号对齐

C++ 将字符串与std::stringstream中的破折号对齐,c++,std,stringstream,C++,Std,Stringstream,我试图将一组数字写入一个字符串流,如下所示: SOME_TEXT 12-23-43 SOME_OTHER_TEXT 12-23-43是三个数字除以破折号('-'),数字可以是1或2位(如1-2-3或12-1-47,因此整个集合的长度不同)。整个集合应该向左对齐,并且正好包含12个字符(包括空格)。当我尝试应用std::left操纵器时,它只对第一个数字有效。我该怎么做呢?下面是一个使用另一个ostringstream的示例: #include <iostream> #i

我试图将一组数字写入一个字符串流,如下所示:

SOME_TEXT    12-23-43    SOME_OTHER_TEXT

12-23-43是三个数字除以破折号('-'),数字可以是1或2位(如1-2-3或12-1-47,因此整个集合的长度不同)。整个集合应该向左对齐,并且正好包含12个字符(包括空格)。当我尝试应用std::left操纵器时,它只对第一个数字有效。我该怎么做呢?

下面是一个使用另一个
ostringstream
的示例:

#include <iostream>
#include <sstream>
#include <iomanip>

int main()
{
  std::ostringstream oss1;
  oss1 << 5 << "-" << 31 << "-" << 6;
  std::ostringstream oss;
  oss << "SOME_TEXT    " << std::setw(12) << std::left << oss1.str() << "SOME_OTHER_TEXT";
  std::cout << oss.str() << std::endl;
  return 0;
}
#包括
#包括
#包括
int main()
{
标准::ostringstream oss1;

oss1与sprintf一起使用,我很惊讶,尽管它不能与stringstream一起使用:

char buffer[12];
sprintf(buffer, "%d-%d-%d", n1, n2, n3);            
output << std::setw(12) << std::left << buffer;
char缓冲区[12];
sprintf(缓冲区,“%d-%d-%d”、n1、n2、n3);

输出应用<代码> STD:在每个术语之前,你的问题解决了吗?得到了这个0xFFFFD7FC8029 E8而不是1-96- 4。SaveTrf虽然工作了,但是我猜它有点不酷。你的代码是什么?它为我工作。我编辑了一个完整的例子。你混合C和C++风格。如果你想打印对象而不是数字,你不能这么做。我可以做任何我想做的事,我最后一次检查。认真地,建议更好的,真正的C++风格,我请求。到目前为止还没有任何效果。我的答案与另一个OSTRIGHORD是很好的。不是你吗?那么,发生了什么?编译错误?执行错误?你的代码是什么?我不能帮助你不知道你做什么。