多个字符串存储在不同的变量C++中
Multiple string store in different variable C++
这是我第一次在这里发帖,所以我会尽量澄清我的问题。所以我需要在变量中存储不同的带空格的字符串。我正在处理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"。我尝试了不同的方法,使用字符缓冲区,但它不起作用,我在循环中输入。
getline
可能有很多原因
- 设置了故障位(因为读取
int
或类似内容失败),在这种情况下,从cin读取的所有调用都将被忽略 - 输入缓冲区中还有未读字符。例如"\n"(如果您用
operator>>
读取std::string
,则可以是)
要处理这两种情况,请插入
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), 'n');
在每次调用getline之前(并在文件顶部添加#include <limits>
)。
这肯定是一种过度杀戮,如果你小心的话,这是可以减少的。
- 检查每个输入是否成功(如
int i; if (std::cin >> i) { /* ok */ }
) - 不要在没有
getline
的情况下读取std::string
(例如operator>>
),除非您稍后调用cin.ignore(...)
如果你完成了所有这些,代码应该可以像你已经拥有的那样工作。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 通过多个头文件使用常量变量
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 执行函数时导致崩溃的变量
- 变量没有改变?通过向量的函数调用