在 C++ 中输入空白行之前,如何要求用户输入整数?

How to ask for integer input from the user until he enters blank line in C++?

所以我需要将用户输入存储在一个向量中,直到他输入一个空行(或无效输入)。我试图将输入转换为字符串,然后将其与空白行进行比较,但没有成功。这是代码:

int input;
vector<int> v;
do
{
    cout << "Write a number!" << endl;
    cin >> input;
    v.push_back(input);
} while (to_string(input) != "");

有什么办法吗?

更新

非常感谢你们的帮助!第二个答案解决了我所有的问题,第一个帮助我理解了它的逻辑背景。

您可以反转您的逻辑:您可以读取字符串,检查它们是否为空,然后将它们转换为整数,而不是读取整数直到某些东西 =21=].

std::string input;
std::vector<int> v;
std::getline(std::cin, input);
while(!input.empty())
{
    int number = std::stoi(input);
    v.push_back(number);
    std::getline(std::cin, input);
}

请注意 std::cin 将不起作用,因为它会忽略空格(包括换行符)。此外,将 std:: cin >>std::getline 混合是 a bad idea

使用标准函数std::getline。这是一个演示程序

#include <iostream>
#include <string>
#include <vector>

int main() 
{
    std::vector<int> v;

    while ( true )
    {
        std::cout << "Enter a number (Enter - exit): ";
        std::string line;

        if ( not std::getline( std::cin, line ) or line.empty() ) break;

        try
        {
            int value = std::stoi( line );
            v.push_back( value );
        }
        catch ( ... )
        {
            std::cout << "Not an integer number\n";
        }           
    }

    for ( const auto &item : v ) std::cout << item << ' ';
    std::cout << '\n';

    return 0;
}

它的输出可能看起来像

Enter a number (Enter - exit): 1
Enter a number (Enter - exit): 2
Enter a number (Enter - exit): 3
Enter a number (Enter - exit): A
Not an integer number
Enter a number (Enter - exit): 4
Enter a number (Enter - exit): 5
Enter a number (Enter - exit): 
1 2 3 4 5