在 C 中读取多行输入

新手上路,请多包涵

我正在尝试从 C++ 中的命令行读取多行输入并将它们存储到一个数组中。这是我的代码。

 std::string line;
    int in;
    std::vector<std::string> v;

    while(std::getline(std::cin, line)){
        if(line == "^D") break;
        v.push_back(line);
    }
    for(auto it = v.begin(); it != v.end(); it++){
        std::cout<<*it<<std::endl;

    }

标准输入进入无限循环,我似乎无法弄清楚如何防止这种情况。基本上,目标行为是在没有任何输入的情况下连续两次按 enter 应该终止 stdin 循环并运行程序。

原文由 Antithesis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 738
1 个回答

我会测试看看字符串是否为空。如果是这样,打破。像这样:

 #include <string>
#include <vector>
#include <iostream>

int main(){

std::string line;
std::vector<std::string> v;

while(std::getline(std::cin, line)){
    if (line.empty()){
        break;
    }
    v.push_back(line);
}

std::vector<std::string>::iterator it;

for (it = v.begin(); it != v.end(); it++){
    std::cout << *it << '\n';
}

return 0;
}

原文由 Matt 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题