有没有办法在请求输入时使用 (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 上拆分它。
(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 上拆分它。