Preface
在ACM竞赛中读取一整行数据时一般会给出这一行数据的个数,以便选手用循环读入。但有的时候题目并没有给出数据的个数,这就需要选手自己处理了,比如这道题。为此,我写了一个能读取整行数据的函数,函数原型如下:
template<typename T>
int ReadLine(T* array);
其中:
array
为要存放数据的数组指针- 函数的返回值为读取的数据的个数,没有读到数据返回0
注意这个函数并不会考虑数组的大小,如果一行包含的数据个数过多可能会出现数组越界的情况。
代码
template<typename T>
int ReadLine(T* array) {
string str_line;
if (!getline(cin, str_line)) {
return 0;
}
else {
stringstream ss(str_line);
int index = 0;
T temp;
while(ss >> temp) {
array[index++] = temp;
}
return index;
}
}