我刚刚开始研究通过网络发送文本的小型程序(TON)我还没有开始,但是当我编译时,当我的名字中有空格时会发生这种情况
Username: Knight Hawk3
LAN (1) or Net (0):
(Here it wont let me enter data)
Process returned 1 (0x1) execution time : 3.670 s
Press any key to continue.
这是正常(应该)发生的事情
Username: Knight
LAN (1) or Net (0):
1
Process returned 1 (0x1) execution time : 2.134 s
Press any key to continue.
这是我的来源
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Window.hpp>
#include <SFML/System.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/Network.hpp>
#include <iostream>
#include <string>
using namespace std;
bool firstrun = true;
int main() {
if (firstrun) {
cout << "Username: ";
string name = "";
cin >> name;
while (name == "") {
cout << "Invalid Enter a new name: ";
cin >> name;
cout << "\n";
}
}
cout << "LAN (1) or Net (0): ";
int type;
cout << "\n";
cin >> type;
while (type < 0) {
cout << "Invalid LAN (1) or Net (0): ";
cin >> type;
}
return true;
}
我正在运行WIN7,使用Code :: Blocks
为什么这会发生空间?
答案 0 :(得分:1)
std::cin
读取到第一个空格,但将其余部分保留在缓冲区中,这将用于以下std::cin
。
如果您要阅读第一个'\n'
(点击输入),则必须将std::cin
替换为
std::getline(std::cin, name);