我想要做的是从终端获取用户输入,并在程序中的其他函数中使用该输入。由于我的函数仅将输入流作为参数,因此我想将输入字符串转换为输入流。
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;
        }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这段代码时出现的另一个问题是,当我用一堆字符而不是新行结束控制台输入时(按 Enter 键然后按 ctrl+d),该行被忽略并且没有打印出来。示例:当我输入以下内容时:
aaa bbb
ccc ctrl+d
Run Code Online (Sandbox Code Playgroud)
我只得到第一行(aaa bbb) 而没有打印出ccc。但:
aaa bbb
ccc
ctrl+d 
Run Code Online (Sandbox Code Playgroud)
也打印出 ccc,但它会忽略新行。那么为什么会发生这种情况呢?
我正在阅读C++ 是否可以确定指针是否指向有效对象?该线程中的正确答案是不,你不能这样做,但该线程现在已经很旧了,我想知道是否有任何更改。我读到用智能指针这是可能的。那么如何才能实现这一目标呢?