我想将输入和输出流组合到输出流中。 我的意思是,如果这是我的代码:
int num;
string str;
cout << "string: ";
cin >> str;
cout << "num: ";
cin >> num;
cout << "num is " << num << " str is " << str;
我将输入流重定向到包含以下内容的txt文件:
嘿1
我的输出流将包含:
string: hey
num: 1
num is 1 str i hey
绝对:
string: num: num is 1 str is hey
在收到输入后,我不想在cin中输入每个变量。我希望它是自动的。
答案 0 :(得分:0)
// Example program
#include <istream>
#include <string>
#include <vector>
class AutoCinToCoutReader {
public:
inline void write(const std::string& in) { std::cout << in << std::endl; }
};
std::istream& operator >> (std::istream& is, AutoCinToCoutReader& dt)
{
std::string in;
is >> in;
dt.write(in);
return is;
}
void read(const std::string& what, AutoCinToCoutReader& rd) {
std::cout << what << ": ";
std::cin >> rd;
}
int main()
{
AutoCinToCoutReader rd;
std::vector<std::string> fields = { "Test1", "Test2" };
for(const std::string& field : fields) {
read(field, rd);
}
}
我能提供的最小的东西是:
// Example program
#include <string>
#include <vector>
#include <iostream>
#include <istream>
#include <ostream>
std::istream& operator >> (std::istream& is, std::ostream& os) {
std::string in;
is >> in;
os << in << std::endl;
return is;
}
void read(const std::string& what) {
std::cout << what << ": ";
std::cin >> std::cout;
}
int main()
{
std::vector<std::string> fields = { "Test1", "Test2" };
for(const std::string& field : fields) {
read(field);
}
}
你无法立刻从cin写入cout。无论如何,你需要解决它。查看更新后的操作符,在存入cin后直接输出到cout。