gpt4 book ai didi

c++ - 从 C++ 声明中的输入读取?

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:04 25 4
gpt4 key购买 nike

所以我来自 Java,在那里你可以在使用扫描器时做这样的事情

int n = s.nextInt();

现在我正在涉足 C++,我觉得这样做很烦人:

int n;
cin >> n;

是否有一种简写的方式来读取变量声明中的输入?

最佳答案

你可以创建一个辅助函数来为你做这件事:

// Using an anonymous namespace, since this is intended to
// be just an internal utility for your file... it's not
// a super awesome, shareable API (especially since it hard
// codes the use of std::cin and has no error checking).
namespace {

// Helper function that reads an integer from std::cin.
// As pointed out in Robin's solution, you can use a template
// to handle other types of input, as well.
int ReadInt() {
int result;
std::cin >> result;
return result;
}
}

然后你可以这样做:

int n = ReadInt();

不过,如果你真的想全力以赴,你可以创建一个更精细的解决方案:

namespace input_utils {
class IOException {};
class Scanner {
public:
Scanner() : input_(std::cin) {}
Scanner(std::istream& input) : input_(input) {}

template<typename T> T Read() {
CheckStreamOkay();
T result;
input_ >> result;
CheckStreamOkay();
return result;
}

private:
void CheckStreamOkay() {
if (!input_) {
throw IOException();
}
}
std::istream& input_;
};
}

然后你可以这样做:

input_utils::Scanner scanner(std::cin);
int a = scanner.Read<int>();
int b = scanner.Read<int>();
double c = scanner.Read<double>();
...

不过,到那时,您可能想要寻找已经执行此操作的现有库。

关于c++ - 从 C++ 声明中的输入读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31362893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com