-3

我的for-construction有问题,我不知道为什么我的计数从0开始但你不能在上面写(你可以从寄存器1开始写)。我在代码中标记了问题所在.

#include <iostream>
#include <string>
#include <vector>

int main()
{
std::string day, date;
int registerCount;

std::cout << "INPUT DATA"
          << std::endl << std::endl
          << "Enter the day in which you want to perform the register: "
          << std::endl;
std::cin >> day;
std::cout << "DATE:" << std::endl;
std::cin >> date;
std::cout << "Enter the number of registers you wanna perfom for the day "
          << day << ":" << std::endl;
std::cin >> registerCount;

std::vector<std::string> registers(registerCount);
for (int i = 0; i < registerCount; ++i)     **here is the problem**
{
    std::cout << "Register " << i << ":" << std::endl;       **it starts from 0 but you can't write on Register 0**
    std::getline(std::cin, registers[i]);
}

std::cout << "The data for the day of " << day << " are the following: "
          << std::endl;

std::cout << "DATE: " << date << std::endl;
for (int i = 0; i < registerCount; ++i)
    std::cout << registers[i] << std::endl;
}
4

2 回答 2

0
for (int i = 0; i < registerCount; ++i)

您在这里将 i 定义为从 0 开始。很简单,您需要做的就是将“i = 0”更改为“i = 1”。

您分配给该向量的方式看起来也有点错误。我认为您需要在该语法中对向量使用 push_back(),但我对向量的所有不同运算符不太熟悉。

于 2013-09-08T18:09:26.663 回答
0

利用

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

标题 -#include<limits>

在你之后

std::cin >> registerCount;

“吃掉”来自前一个的尾随换行符,std::cin这是跳过第一个输入的原因

于 2013-09-08T18:12:51.863 回答