如何将数字(以空格分隔)读入数组?
输入(getline): 100 231 144 123 551
tab[0] = 100;
tab[1] = 231;
...
我怎么能这样做?
答案 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]>>...
在上面,我总是假设您知道数组中的数字数。如果你不这样做,那么你应该有一些东西作为终止的象征 - 那么基本上你只需要阅读数字直到遇到符号。然后它将取决于符号究竟是什么。