C++ 一个简单的C++;当循环不工作时
我有一个简单的while循环,我正试图实现它,但对于我的生命来说,我无法找出我缺少了什么。我已将currentuser在顶部初始化为-1C++ 一个简单的C++;当循环不工作时,c++,while-loop,C++,While Loop,我有一个简单的while循环,我正试图实现它,但对于我的生命来说,我无法找出我缺少了什么。我已将currentuser在顶部初始化为-1 while(currentuser = -1){ cout << "Enter user ID: "; cin >> id; currentuser = search(a, length, id); } while(currentuser=-1){ cout>id; currentuser=搜索(a、长度、id
while(currentuser = -1){
cout << "Enter user ID: ";
cin >> id;
currentuser = search(a, length, id);
}
while(currentuser=-1){
cout>id;
currentuser=搜索(a、长度、id);
}
我的搜索功能是:
int search (User a[ ], int length, string userID){
User u;
string tempid;
int templegnth; //I ignore length for now as I will use it later
for(int i=0; i<50; i++){
tempid = a[i].getID();
templegnth = tempid.length();
if((tempid == userID)){
return i;
}
}
return -1;
}
int搜索(用户a[],int长度,字符串userID){
用户u;
字符串tempid;
int templegnth;//我暂时忽略长度,因为稍后将使用它
对于(int i=0;i尝试==-1
而不是=-1
,=
(赋值)运算符与==
(相等)运算符不同
该行:
while(currentuser = -1){
首先将-1
分配给当前用户
,然后检查当前用户
是否有非零值。情况总是这样(-1!=0
),因此循环永远不会结束
你的意思可能是:
while(currentuser == -1){
它将当前用户
与-1
进行比较,并继续循环,只要该比较为真。您需要更改:
while(currentuser = -1){
将是:
while(currentuser == -1){
当前,每次循环运行时,您都将
currentuser
分配给-1
,而不是检查它是否仍分配给该值。即使将=更改为==,循环仍然存在问题
while(currentuser == -1){
std::cout << "Enter user ID: ";
std::cin >> id;
currentuser = search(a, length, id);
}
while(当前用户==-1){
std::cout>id;
currentuser=搜索(a、长度、id);
}
键入EOT(Linux框上的control-D,windows上的control-Z)将引发std::cin
的文件结束条件。不会更改id
的值,并且查找可能会继续返回-1。结果是一个无限循环,有大量喷到std::cout
解决此问题的一种方法是,当
std::cin>>id;
失败时,将从循环中中断出来。例如,如果(!(std::cin>>id))中断;
您已经得到了答案,但下面是如何在将来避免它的提示。
始终尝试使用
while(-1 == currentuser){
std::cout << "Enter user ID: ";
std::cin >> id;
currentuser = search(a, length, id);
}
将被编译器抛出将其更改为while(currentuser==-1)<代码>注释>代码>=< /代码>。如果不是这样,你可以考虑实际描述问题是什么,问一个问题。你的书的哪一章清楚地区分了=运算符和=操作符?HMM……我会说,可读性的损失可能不会被额外的语法检查所抵消。
while(-1 = currentuser){
;
}