gpt4 book ai didi

c++ - 多个字符串存储在不同的变量 C++ 中

转载 作者:行者123 更新时间:2023-11-30 02:57:00 25 4
gpt4 key购买 nike

这是我第一次在这里发帖,所以我会尽量把我的问题说清楚。所以我需要在变量中存储带有空格的不同字符串。我正在使用 Eclipse,但遇到了问题。

这是代码

using namespace std;
string p_theme;
string p_titre;
int p_anneeEdition;
string p_pays;
string p_auteur;
string p_editeur;
string p_isbn;

cout << "Veuillez saisir le thème:" << endl;
getline(cin, p_theme, '\n');


cout << "Veuillez saisir le titre:" << endl;
getline(cin, p_titre, '\n');

....

这是控制台向我显示的内容

Veuillez saisir le thème:
Veuillez saisir le titre:

问题是我没有时间在第二次 cout 之前输入字符串“Theme”。我尝试了不同的方式,使用 char 缓冲区它不起作用,我进入了一个循环。

最佳答案

A getline什么都不做可能有很多原因

  • 设置了故障位(因为读取 int 或类似的失败),在这种情况下,所有从 cin 读取的调用都会被忽略。
  • 您的输入缓冲区中还有未读字符。例如“\n”(如果您用 std::string 读取 operator>> 则可能是)。

要处理这两种情况,插入

cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');

在每次调用 getline 之前(并在文件顶部添加 #include <limits>)。

这肯定是矫枉过正,如果您小心的话,可以减少这种情况。

  • 检查每个输入是否成功(如 int i; if (std::cin >> i) { /* ok */ } )
  • 不要阅读 std::string没有getline (例如 operator>> ),除非您稍后调用 cin.ignore(...) .

如果您完成所有这些,代码应该可以像您已有的那样工作。

关于c++ - 多个字符串存储在不同的变量 C++ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15012820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com