繁体   English   中英

getline function的使用方法和制作创建座位表的程序

[英]Method of using getline function and making a program to create a seat list

我是 C++ 的初学者,我正在尝试编写一个程序来帮助操作员创建座位列表。

然后,我写了几行来提示用户使用以下格式仅输入 Name、passportId、Seat 一行:Name/PassportID/SeatNumSeatChar

我下面贴的代码是想创建一个临时的Name, PassportId 和Seat 来查看是否在当前座位计划中分配,二维字符arrays 可以匹配当前座位计划(也是二维字符数组)进行检查。

如果该批次中某个用户请求的座位位置已经分配,则该用户的分配添加请求将不成功。 只有成功的分配添加请求才会更新系统。 (不包含在代码中)

#include <iostream>
#include <Windows.h>
#include <string.h>
#include <string>
using namespace std;

int add_Assignment_In_Batch();

int main(){add_Assignment_In_Batch()}

int add_Assignment_In_Batch(){
    
string Name[13][6] = { "none" }, PassportID[13][6], Seat_Num[13][6], Seat_Char[13][6];
    int Row = 0, Column = -1;

   cout << "enter name/passportID/Seat:,until 0/ is entered." << endl;

    do {    //input format: Name/passportID/Seat into array

        if (Column == 5)Row++;
        if (Column == 5)Column = -1;
        Column++;
        if (Row == 12 && Column == 5)break;

        getline(cin, Name[Row][Column], '/');
        if (Name[Row][Column] == "0")break;
        getline(cin, PassportID[Row][Column], '/');
        getline(cin, Seat_Num[Row][Column], ('A', 'B', 'C', 'D', 'E', 'F'));        //input Seat Number,when encounter A B C D E or F,stop getline
        getline(cin, Seat_Char[Row][Column]);

    } while (Name[Row][Column] != "0");

    Column--; //print out all the information below

    cout << endl << "*** Total Requests ***" << endl;
    if (Row != 0) {
        for (int i = 0; i < Row; i++) 
            for (int k = 0; k < 6; k++)  //e.g [1][0]Name: Chris PassportID: 123456A Seat: 10A
            {
                cout << "[" << i << "]" << "[" << k << "]   " << "Name: " << Name[i][k] << " PassportID: " << PassportID[i][k] << " Seat: " << Seat_Num[i][k] << Seat_Char[i][k] << endl;
            }
    }
    for (int i = 0; i <= Column; i++)
        cout << "[" << Row << "]" << "[" << i << "]   " << "Name: " << Name[Row][i] << " PassportID: " << PassportID[Row][i] << " Seat: " << Seat_Num[Row][i] << Seat_Char[Row][i] << endl;

    return 0;
}

预期输入(示例):

Chris/12345678A/10A
Kyle/24689C/2D
0/

10分配给Seat_Num
A分配给Seat_Char

我最终需要输入ABCDEF才能完成getline(cin,Seat_Num[1][1],('A','B','C','D','E','F'));

预期输出(示例):

[1][0]Name: Chris PassportID: 123456A Seat: 10A
[1][1]Name: Kyle PassportID: 24689C Seat: 2D
...

下面是执行结果:

$ ./test
enter name/passportID/Seat:,until 0/ is entered.
Chris/12345678A/10A
Kyle/24689C/2D
0/
0/
0/
0/

*** Total Requests ***
[

它没有停止getline()并让用户继续输入。

getline()遇到 AB C DE 或 F 时,我不知道要完成上述语句。

我会重新开始,这就是你需要的

  • 定义一个包含预订的结构:字符串名称、护照和座位
  • 现在创建这些结构的空向量
  • 现在通过 getline 循环从用户那里获取整行
  • 在 / 角色上划线并创建一个新的预订条目
  • 将该条目存储在向量中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM