Это ошибка g ++ или CLion (используя Ctrl + D в CLion)? - PullRequest
1 голос
/ 31 марта 2020

При использовании следующего кода

#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)

Я использую CLion на Ubuntu и

asmmo@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

но ожидал, что ничего не отображается, кроме ошибки

1 Ответ

2 голосов
/ 31 марта 2020

Мой психи c Предполагаю, что это проблема с тем, как CLion отправляет данные в программу.

https://youtrack.jetbrains.com/issue/CPP-5704

I можно отключить сочетания клавиш для клавиш ⌘ + D и Ctrl-D и использовать действие «Отправить EOF» или нажатия клавиш ⌘-D и Ctrl-D при отключенных сочетаниях клавиш Clion, результат тот же: программа не получает EOF, но получает какой-то сигнал об убийстве.

Очевидно, некоторые люди находят способ обойти это:

https://xbuba.com/questions/45803954

Отключение run.processes.with.pty в Реестре (открытое через Find Action) обычно помогает.

Я никогда не понимал, шумиха с инструментами Jetbrains ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...