【问题标题】:Getting Spaces to Play Nicely with C++ Input Streams让空间与 C++ 输入流一起玩得很好
【发布时间】:2011-04-30 22:58:11
【问题描述】:

首先考虑这个示例 C++ 代码:

std::string input1, input2, input3;
std::cout << "Enter Input 1: ";
std::cin >> input1;
std::cout << std::endl << "Enter Input 2: ";
std::cin >> input2;
std::cout << std::endl << "Enter Input 3: ";
std::cin >> input3;

如果我为 input1 输入“Good day neighbors”之类的内容,则 input1 设置为“Good”,input2 设置为“day”,输入 3 设置为“neighbors”。我什至没有机会为 input2 和 input3 设置值。

所以我的问题是:我如何将包含空格的文本字符串输入到单个字符串中,而不会使它(由于缺乏更好的术语)分解并溢出到对输入流的后续调用?

提前感谢收到的所有答案。

【问题讨论】:

  • fgets。是骗子很快就会得到链接..
  • 这些都不是重复的。 brumScouse,您的问题涉及固定大小的 C 样式字符串以及 scanf 的替代方法。我正在使用 C++ 标准库字符串。答案对我没有帮助。杰里,你的问题是由已经知道 getline() 存在而我不知道的人提出的。感谢您提供相同的链接。
  • s.: 它是第二个的副本。您只是不知道您需要基于线路的解决方案。

标签: c++ string inputstream standard-library


【解决方案1】:

你可以使用std::getline:

std::getline(std::cin, input1);
...
std::getline(std::cin, input2);
...
std::getline(std::cin, input3);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 2013-10-23
    • 2020-04-20
    • 1970-01-01
    • 2012-11-27
    • 2015-04-30
    • 2011-03-16
    相关资源
    最近更新 更多