我使用SELECT CAST(DATEDIFF(s, @d, DATEFROMPARTS(YEAR(@d), 1, 1)) as FLOAT) /
DATEDIFF(s, DATEFROMPARTS(YEAR(@d) + 1, 1, 1), DATEFROMPARTS(YEAR(@d), 1, 1)) +
YEAR(@d)
在我的程序中输入一些数字。这是输入格式:
cin
我需要将这些数字逐个输入到数组中,直到输入为止。
但是1' '2' '3' '4' '5' ''\n' //One item includes one number and one space. There is an Enter at the end of input.
无法检测到cin
。有没有人对此有好主意?
答案 0 :(得分:0)
由于评论中的答案尚未发布答案......
我猜你最初是在用int x;
... cin >> x
阅读。 istream::operator>>(int)
函数跳过前导空格,换行符计为空格。因此,使用这种方法,您无法将1 2
与1\n2
区分开来。
相反,您需要使用至少保留换行符的函数(如果不是所有空格)。 std::getline
是一个很好的功能。然后,您可以使用std::stringstream
将该行转换为流。
例如:
#include <vector>
#include <string>
#include <sstream>
#include <iostream>
int main()
{
std::vector<int> numbers;
std::string line;
std::getline(std::cin, line);
std::istringstream iss(line);
for( int x; iss >> x; )
numbers.emplace_back(x);
// Output to test that it worked
for ( int x : numbers )
std::cout << x << " ";
std::cout << '\n';
}