在c ++中将输入分成多个变量

时间:2015-01-29 18:51:51

标签: c++

如果我要求用户输入用短划线分隔的输入,我该如何将它们存储到多个变量中?每个部分由破折号分隔一个。 例如,这不起作用。

cout << "enter date" << endl;
// user inputs something like 11/11/1980
cin >> month

我理解输入存储在iostream中,但是如何在第一次斜杠后存储输出

4 个答案:

答案 0 :(得分:2)

我认为您应该考虑使用C ++ 11已经为您提供的日期工具。

time.h&#39; struct tmit's own streaming operators。所以我做这样的事情:

#include <iostream>
#include <sstream>
#include <iomanip>
#include <ctime>

using namespace std;

int main() {
    tm t;
    istringstream ss("11/11/1980");

    ss >> get_time(&t, "%m/%d/%Y");

    cout << t.tm_mon + 1 << ' ' << t.tm_mday << ' ' << t.tm_year << endl;

    return 0;
}

我不知道为什么,但值得注意的是tm.tm_mon是基于0的...

另请参阅:http://en.cppreference.com/w/cpp/io/manip/put_time

答案 1 :(得分:1)

我刚刚遇到同样的情况,我觉得这很有效。 希望这仍然有用。

#include <iostream>
#include <string>
#include <iomanip>

int main()
{
    // This is to initialize variables:
    std::string mm,dd,yy;

    // Now get the input
    std::cout << "Enter the Date number: ";

    // Then split it using std::getline() with delimiter '/'
    // and assign them to relevant variables
    std::getline(std::cin, mm,'/');
    std::getline(std::cin, dd, '/');
    std::cin >> yy;

    std::cout << mm << " " << dd << " " << yy;
}

答案 2 :(得分:0)

您可以将输入存储在string(或char数组)中,然后将所需的部分分开,为此您可以创建一个函数,该函数将input string作为参数并将其部分分开。

答案 3 :(得分:0)

您可以在网上搜索“c ++阅读日期”以获取一些示例。

一种方法是:

unsigned int month;
unsigned int day;
unsigned int year;
char         separator;
cin >> month >> separator >> day >> separator >> year;

但是有一些问题,例如在'/'。

之前有一个空格

另一种方法是使fscanf具有合适的格式字符串:

  fscanf(stdin, "%2d/%2d/%4d", &month, &day, &year);

但是,这不使用C ++流。

您可以使用字符串和getline

std::string month_str;
std::string day_str;
std::string year_string;
std::getline(cin, month_str, '/');
std::getline(cin, day_str, '/');
std::getline(cin, year_str); // What's the delimiter here???