在C ++中分隔字符串并存储到数组的最佳方法?

时间:2015-04-10 16:41:02

标签: c++ string parsing

我试图按照格式分隔字符串 STRING1-> STRING2其中" - >"是分隔符,STRING1可以存储到数组中的单元格中,STRING2可以存储到下一个连续的单元格中。什么是最好的编码方式?谢谢!

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是使用sscanf:

char input[] = "123->456";
sscanf("%d->%d", &array[0], &array[1]);

使用iostreams,它有点笨拙(但仍然完全可能):

char ign1, ign2;

istringstream input("123->456");
input >> array[0] >> ign1 >> ign2 >> array[1];
assert(ign1=='-');
assert(ign2=='>');

这些之间存在细微差别--C ++版本将接受在分隔符之前,之中或之后具有空格的输入,例如123 - > 456和C版本韩元'吨。如果您希望C版本这样做,那么添加它(将格式字符串更改为"%d - >%d")是微不足道的,但要使C ++版本不这样做会使它更加笨拙:

input >> array[0];
input.read(ign1);
input.read(ign2);
input >> array[1];