为什么循环只运行一次?

时间:2019-08-17 17:52:51

标签: c++ while-loop ofstream

我尝试制作电话Sys,并且在main {}中使用了while循环。我不知道为什么它只能运行一次,除非我给它停止命令,否则它应该运行无限次。

#include <iostream>
#include <string>
#include <fstream>
using namespace std;


void record(string name, int phoneNum, int count);

// main
int main() {
    cout << " Welcome to use the Phone Contact Systerm " << endl;
    string name;
    int phoneNum;
    int count = 0;
    string signToStop;
    cout << " Please enter name and phone number " << endl;
    while ( cin >> name >> phoneNum){
        cout << " If you want to start the program, enter start "     << endl;
        cout << " If you want to quit the program, enter quit " <<     endl;
        cin >> signToStop;
        if (signToStop == "start"){
            record(name, phoneNum, count);
        }
        else if ( signToStop == "quit" ){
            break;
        }
        count++;

    }
}

// record all name info into Name set and record all phone numbers     into PhoneNum set
void record(string name, int phoneNum, int count){
    string Name[] = {};
    int PhoneNum[] = {};
    Name[count] = {name};
    PhoneNum[count] = {phoneNum};

    // now start to record all the info into .txt document

    ofstream phoneFile;
    phoneFile.open("contact.txt");
    phoneFile << name << "  " << phoneNum << endl;
}

结果是:

 Welcome to use the Phone Contact Systerm 
 Please enter name and phone number 
Molly 5307659229

Process finished with exit code 0

2 个答案:

答案 0 :(得分:2)

也许尝试用ulong int作为电话号码,可能太长了。我还可能会补充一点,我有点困惑,因为您的函数record()具有第三个参数,该参数没有默认参数。您的问题可能也在那里。与没有默认值一样,您需要在使用参数时将其放入。

答案 1 :(得分:2)

正如频谱所说,电话号码实际上不是整数,因此从编程(甚至是数学)的角度来说,它也不是“数字”。

它更像是一个数字序列;即是一个字符串。

当您尝试将其解释为int时遇到两个问题:

  • 您的int类型对于该值而言太小(这是导致循环结束的原因)
  • 领先的零是没有意义的(充其量,它被用来翻转到八进制模式,这不是您想要的)

相反,我将其读取为字符串。以后您仍然可以验证它,例如“每个字符都是数字吗?”。