如何将数字(以空格分隔)读入数组?

时间:2014-02-01 23:46:10

标签: c++

如何将数字(以空格分隔)读入数组?

输入(getline): 100 231 144 123 551

tab[0] = 100;
tab[1] = 231;

...

我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

默认情况下,

std::cin >> i在空白处打破。如果您想按行进行处理,可以使用std::istringstream

如果该行是可变的,你可以只用零替换空格,如果你想要一次正确的分配就计算路上的元素,并在第二次传递时使用atoi

答案 1 :(得分:1)

愚蠢的方法是逐字节读取字符串并自己进行翻译。

或者您可以使用sscanf

char input[] = "100 231 144 123 551"
sscanf(input, "%d%d%d%d%d", tab[0], tab[1], tab[2], tab[3], tab[4]);

但我猜您实际上正在使用getline对象的istream - 如果是这种情况,您可以改为使用运算符>>

如果是标准输入流cin

cin>>tab[0]>>tab[1]>>...

或者,如果是文件流fin

fin>>tab[0]>>tab[1]>>...

在上面,我总是假设您知道数组中的数字数。如果你不这样做,那么你应该有一些东西作为终止的象征 - 那么基本上你只需要阅读数字直到遇到符号。然后它将取决于符号究竟是什么。