LoginSignup
1
0

More than 5 years have passed since last update.

cloud9で正規表現が使えない場合

Posted at

あらまし

3年ぶりくらいに、C++で正規表現を使用したくなってCloud9で環境用意して試してみたらエラーを投げられた。

テスト方法

Is this C++11 regex error me or the compiler?

test.cpp
#include <iostream>
#include <regex>
using namespace std;

int main()
{
    regex r1("S");
    printf("S works.\n");
    regex r2(".");
    printf(". works.\n");
    regex r3(".+");
    printf(".+ works.\n");
    regex r4("[0-9]");//<-ここで「what():  regex_error」とか怒られる
    printf("[0-9] works.\n");
    return 0;
}

どうやら、g++が4.8とかだとこうなるらしい。

修正方法

Ubuntu 14.04 に GCC 4.9 をインストールする

# PPAの追加
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
# パッケージのインストール
sudo apt-get update
sudo apt-get install g++-4.9
# update-alternatives の導入
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20

sudo rm /usr/bin/cpp
sudo update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.8 10
sudo update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.9 20

sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc

sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++

詳しい所までは調べていないが、とりあえずこれで通るようになった。

感想

3年前に手元のMacで動いてたソースが動かないとか、意外とバージョンアップがのんびりしているものなんだな。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0