1、使用 std::getline
常见的解决方案是使用 std::getline
函数,它可以读取整个输入行,包括空格。
#include <string> #include <iostream> using namespace std; int main() { string name, title; cout << "Enter your name: "; // 读取整个输入行,包括空格 getline(cin, name); // 读取整个输入行,包括空格 cout << "Enter your favorite movie: "; getline(cin, title); cout << name << "'s favorite movie is " << title << endl; }
2、使用 std::cin.getline 处理 C 风格的输入
如正在使用 C 风格的数组(字符数组),可以使用 std::cin.getline
来读取带空格的输入。
#include <iostream> using namespace std; int main() { char name[256], title[256]; cout << "Enter your name: "; // 读取一行输入 cin.getline(name, 256); cout << "Enter your favorite movie: "; cin.getline(title, 256); // 读取一行输入 cout << name << "'s favorite movie is " << title << endl; }
3、使用 std::ws 跳过前导空格
在某些情况下,可能需要在调用 std::getline
之前清除输入流中的前导空格。可以使用 std::ws
操作符来跳过空格字符。
#include <iostream> #include <string> using namespace std; int main() { string input; cout << "Enter a line with spaces: "; // 跳过前导空格后再读取一行 getline(cin >> ws, input); cout << "You entered: " << input << endl; }