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

Best way to delimit a string and store into array in C++?

本文关键字:数组 最佳 方法 存储 串并 C++ 分隔 字符 字符串      更新时间:2023-10-16

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

最简单的方法可能是使用 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];