我想要做的是从终端获取用户输入,并在程序中的其他函数中使用此输入。由于我的函数只接受输入流作为参数,因此我想将输入字符串转换为输入流。
int main(int argc, char** argv)
{
std::vector<std::string> args(argv, argv + argc);
if(args.size() == 1){ //if no arguments are passed in the console
std::string from_console;
std::istringstream is;
std::vector<std::string> input;
while(!getline(std::cin,from_console).eof()){
input.emplace_back(from_console);
}
for(std::string str : input){
std::cout << "\n" << str;
}
}
当我尝试这段代码时,出现了另一个问题,如果我以一堆字符而不是换行符(按下回车键然后按下Ctrl+D)结束控制台输入,那么这行会被忽略并没有被打印出来。 例如: 当我输入以下内容时:
aaa bbb
ccc ctrl+d
我只输出了第一行(aaa bbb),而没有输出ccc。
但是:
aaa bbb
ccc
ctrl+d
print()函数也会输出ccc,但它会忽略换行符。那么为什么会出现这种情况呢?
is
字符串流做些有用的事情吗? - WhozCraig!getline(std::cin,from_console).eof()
应该是getline(std::cin,from_console)
。除此之外,将字符串转换为输入流的整个用法似乎与您实际询问的关于Ctrl+D
的行为完全无关。要么这样,要么您已经把两个不同的问题合并成了一个。 - Fureeish