2013年4月26日金曜日

C++ レガシー文字列変換で気をつける事

 今更、何を書いてはんの?だとは思いますが、ついつい、うっかりしがちなんで
#include <iostream>
#include <string>

std::string get_string( const char* str ) {
  std::string result = str;
  return result;
}

int main() {
  std::cout << get_string( nullptr ).size() << std::endl;
  std::cout << " OK? " << std::endl;
  return 0;
}
実行結果
terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct null not valid
Abort trap: 6

0 件のコメント: