std::cin 输入带空格?

新手上路,请多包涵
#include <string>

std::string input;
std::cin >> input;

用户想要输入“Hello World”。但是 cin 在两个单词之间的空格处失败。我怎样才能使 cin 包含整个 Hello World

我实际上是在用结构做这个,而 cin.getline 似乎不起作用。这是我的代码:

 struct cd
{
    std::string CDTitle[50];
    std::string Artist[50];
    int number_of_songs[50];
};

std::cin.getline(library.number_of_songs[libNumber], 250);

这会产生错误。有任何想法吗?

原文由 dukevin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

你必须使用 cin.getline()

 char input[100];
cin.getline(input,sizeof(input));

原文由 Pete 发布,翻译遵循 CC BY-SA 3.0 许可协议

如何从输入中读取字符串?

您可以使用 std::cin 读取单个以空格结尾的单词,如下所示:

 #include<iostream>
#include<string>
using namespace std;

int main()
{
    cout << "Please enter a word:\n";

    string s;
    cin>>s;

    cout << "You entered " << s << '\n';
}

请注意,没有显式的内存管理,也没有可能溢出的固定大小的缓冲区。如果你真的需要一整行(而不仅仅是一个单词),你可以这样做:

 #include<iostream>
#include<string>
using namespace std;

int main()
{
    cout << "Please enter a line:\n";

    string s;
    getline(cin,s);

    cout << "You entered " << s << '\n';
}

原文由 Build Succeeded 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题