小编r3k*_*k0j的帖子

有没有办法在 C++ 中将输入字符串转换为输入流?

我想要做的是从终端获取用户输入,并在程序中的其他函数中使用该输入。由于我的函数仅将输入流作为参数,因此我想将输入字符串转换为输入流。

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++ string input stream

3
推荐指数
1
解决办法
1948
查看次数

是否可以确定指针是否指向有效对象,如果是,如何确定?

我正在阅读C++ 是否可以确定指针是否指向有效对象?该线程中的正确答案是不,你不能这样做,但该线程现在已经很旧了,我想知道是否有任何更改。我读到用智能指针这是可能的。那么如何才能实现这一目标呢?

c++ pointers smart-pointers

-1
推荐指数
1
解决办法
192
查看次数

标签 统计

c++ ×2

input ×1

pointers ×1

smart-pointers ×1

stream ×1

string ×1