如何覆盖运算符>>将cin输入拆分为数组元素

时间:2017-10-05 22:25:13

标签: c++ arrays

我尝试使用运算符>>创建一个类覆盖以便输入中的字符被拆分并插入到它们自己的数组/列表元素中。例如:

static File myFile = new File("C:\\filepath");
static File myFolder = new File("C:\\folderpath");

public static void main(String[] args) 
        throws IOException {
    fileMove();
}

public static void fileMove() 
        throws IOException {
    Files.move(myFile.toPath(), myFolder.toPath(), StandardCopyOption.REPLACE_EXISTING);
    return;
}

将代表与此相似:

cin >> myobj // say '1234' is entered

我对C ++并不是很有经验,如果这是非常微不足道的,或者出于某种原因只是一个坏主意,那就不行了。

1 个答案:

答案 0 :(得分:3)

是的,这是一件非常合理的事情。编写代码的一种可能方法是沿着这条总线:

#include <iostream>
#include <sstream>

class foo { 
    char a, b, c, d;

    friend std::istream &operator>>(std::istream &is, foo &f) { 
        is.get(f.a);
        is.get(f.b);
        is.get(f.c);
        is.get(f.d);
        return is;
    }

    friend std::ostream &operator<<(std::ostream &os, foo const &f) {
        return os << '[' << f.a << ',' << f.b << ',' << f.c << ',' << f.d << ']';
    }
};

int main() { 
    foo f;
    std::istringstream input("1234");

    input >> f;
    std::cout << f;
}