在c ++中的每个标记后添加空格

时间:2015-04-24 09:10:40

标签: c++

#include<stdio.h>
#include<iostream>
#include<string.h>

int main()
{
char str[] = "01 21 03 06   0f 1a 1c 33   3a 3b";
char *pch;
char *m[100];
pch = strtok (str,"' ''  '");
size_t i = 0;
while (pch !=NULL)
{
m[i]=pch;
i++;
pch = strtok (NULL,"' ''  '");
}
for (int j=0;j!=i;j++)
{
 printf("%s",m[j]);

}
return 0;

我想在每个令牌后添加空格。我想将空间作为数组m的一部分。不是printf("%s",m[j]);之前的printf(“”)我把它作为“012103060f1a1c333a3b”放出来如何在每2个字符后添加空格?

1 个答案:

答案 0 :(得分:2)

在C ++中重写以使其更简单:

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

int main()
{
  std::string str("01 21 03 06   0f 1a 1c 33   3a 3b");
  std::vector<std::string> m;
  std::istringstream inp(str);
  std::string token;
  while (inp >> token)
  {
    std::ostringstream outp;
    outp << token << " ";
    m.push_back(outp.str());
  }
  for (const auto& tok: m) { std::cout << tok; }
}

使用stringstream时,您可以读取由任何空格分隔的标记,并将它们以所需格式传输到输出流。

注意使用输出流比这里真正需要的更通用。它可以替换为m.push_back(token + " ");