如何检测在C ++中输入?

时间:2015-09-14 23:03:38

标签: c++

我使用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。有没有人对此有好主意?

1 个答案:

答案 0 :(得分:0)

由于评论中的答案尚未发布答案......

我猜你最初是在用int x; ... cin >> x阅读。 istream::operator>>(int)函数跳过前导空格,换行符计为空格。因此,使用这种方法,您无法将1 21\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';
}