有没有办法在请求输入时使用 (std::cin).get() 来接受换行符?

Is there a way to use (std::cin).get() to accept newlines when asking for input?

(std::cin).get()

我想使用 std::cin 来收集 space 的字符串,例如“1/2 oz of flower”。当我添加 space 然后按回车键时,它会退出程序,而不是收集其余的输入。 找到这个 stdcin-and-why-a-newline-remains,我看到一条评论说你可以使用 .get(),但它对我不起作用。

如何使用(std::cin).get()接受输入数据时的space?

#include <iostream>
#include <vector>
#include <fstream> // std::filebuf

using std::cout, std::cin, std::string, std::endl;

int main(int argc, char const *argv[])
{
    
    string total, quantity, dealer;
    cout << "Total($): " << endl; (cin >> total).get();
     // If there's a space in total, it doesn't collect the other
     // variables
    cout << "Quantity: " << endl; cin >> quantity;
    cout << "dealer: " << endl; cin >> dealer;
    
    std::filebuf fb;
    fb.open ("file.txt",std::ios::out);
    std::ostream os(&fb);
    os << total << endl << quantity << endl << dealer << endl;
    fb.close();


    return 0;
}

我认为你应该使用 https://en.cppreference.com/w/cpp/string/basic_string/getline 来解析整个输入,然后根据你的需要在 space 上拆分它。