全局变量- c++函数跳过代码
global variables - C++ Function Skipping Code
我编写了以下代码,它可以很好地编译。但是,当我运行它时,它会在第二次调用该函数时跳过getline(cin, p[x]);
。有人能告诉我为什么吗?
代码如下:
#include "stdio.h"
#include "simpio.h"
#include "strlib.h"
#include "iostream.h"
#include "random.h"
int Hp[2], Atk[2], Ddg[2];
std::string p[2];
void player(int x)
{
cout << "Player name: ";
getline(cin, p[x]);
cout << "tHp: ";
cin >> Hp[x];
cout << "tAtk: ";
cin >> Atk[x];
cout << "tDdg: ";
cin >> Ddg[x];
}
main()
{
string go;
player(0);
player(1);
cout << "Go? (Yes/No): ";
cin >> go;
cin.get();
}
我认为这是因为在输入流中仍然有一个n
。在使用getline
之前先尝试cin.ignore()
。
您的cin
流在第一次使用时没有刷新,getline
假设输入已经完成。您可以使用:
cin.clear(); //clear any possible bits
cin.ignore(); //throw away whatever is there left in the stream
代码似乎"跳过"了对std::getline()
的第二次调用,因为之前对player()
的调用通过std::cin
执行了提取,在流中留下了一个换行符。std::getline()
只读取字符,直到下一个换行符-所以什么看起来是跳过只是std::getline()
未能输入字符,因为剩余的换行符。
std::ws
:
清除换行符。std::getline(std::cin >> std::ws, p[x]);
相关文章:
- 代码在main()中运行,但在函数中出现错误
- 为什么我在使用void函数时得到错误代码C2276
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 这个c++代码是如何在没有定义函数的情况下运行的
- 如何在没有函数的情况下编写此代码并使C++更简单?
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- 了解每月第一天函数的代码
- 代码的效率. 转到和函数调用
- C++(.cpp文件和.h文件)拆分代码并添加一个函数,提取 - 这很容易吗?
- 如何定义一个没有重复代码的继承的 const 类成员函数?
- Arduino:在 loop() 和自定义函数中运行相同的代码时出现问题
- 以下代码中的函数模板有什么问题?
- 为什么这些代码仍然使用 lvalue 函数?
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 为什么下面带有非常量转换函数的代码没有歧义?
- C++代码停止工作错误使用cout内部函数
- 如何将 c++ get 函数代码转换为 opencv 算法中使用的 python
- 如何在c++中重用代码(函数)
- 编译来自学习现代 3D 图形编程的失败代码 函数___tmainCRTStartup中引用未解析的外部符号_main
- 混合代码-函数成员指针