【发布时间】:2020-03-31 12:59:30
【问题描述】:
关于使用以下代码
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<std::string> vec;
std::string temp{};
while(std::cin >> temp) vec.push_back(temp);
std::cout << "\n[ " << vec[0];
for(int i {1}; i < vec.size(); i++) std::cout << ", " << vec[i];
std::cout << "]";
}
使用以下输入
kghukg kjhukg 6887 ^D
我明白了
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
我在 ubuntu 和
上使用 CLionasmmo@asmmo:~$ g++ --version
g++ (Ubuntu 9.3.0-8ubuntu1) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
std=-s++1z 和 c++2a 出现该错误
考虑到评论,我将代码更新为
#include <iostream>
#include <vector>
#include <string>
#include <thread>
using namespace std::chrono_literals;
int main()
{
std::vector<std::string> vec;
std::string temp{};
while(std::cin >> temp) vec.push_back(temp);
std::cout<<vec.size();
std::this_thread::sleep_for(10s);
std::cout << "\n[ " << vec[0];
for(int i {1}; i < vec.size(); i++) std::cout << ", " << vec[i];
std::cout << "]";
}
然后使用
kjjkj jkh 555 ^D
但它等待thwn除了错误没有显示任何东西
【问题讨论】:
-
也许,在
std::cout << "\n[ " << vec[0];输出之前,您可以检查vec中是否有任何内容。虽然,我不清楚为什么vec在输入kghukg kjhukg 6887 ^D后仍然应该为空(但谁知道......) -
@ThomasSablik 这就是我在更新中所做的。尺寸无法显示
-
@asmmo 使用
std::cout << vec.size() << std::endl; -
@ThomasSablik stackoverflow.com/a/7370353/657700
-
@ThomasSablik 可能是 clion 中的一个错误。我使用终端,一切正常。