注:CompanyはFileクラスから継承。set_written_elementでwriteに文字列を渡し、表示させる。
macでは問題ないが、windows10のwslではtxtファイルが文字化けを起こします。
いったい何が悪いのでしょうか?

gccのバージョンはgcc (Ubuntu 5.4.0-6ubuntu1~16.04.6) 5.4.0 20160609でした。
txtファイルをvimで見ると illegal byte in line となっており、文字コードをもとのutf-8からshift-jis, euc-jpに直しても変わらなかったため、質問させていただきました。

int main(){
  Company company_test;
  char path[]="company_test.txt";
  company_test.input_path(path);
  company_test.show();
  company_test.write(company_test.set_written_element());
  cout << company_test.set_written_element() << endl; //winだとset_written_elementがおかしい
  company_test.show();
  return 0;
}

void File::write(const char* text){
  int line_number;
  line_number=Line_Count(output_path());
  ofstream fd(output_path(),ios::app);
  fd << line_number << " " << text << "\n";
  fd.close();
}

const char* Company::set_written_element(){
  const char* written_element;
  string buffer;
  string tmp;
  ostringstream ret_char;
  int i;
  for(i=0; i<=2;i++){
    switch(i){
      case 0:
        cout << "勤務先を入力してください。" << endl;
        cin >> buffer;
        ret_char << setw(25) << left << buffer;
        buffer.clear();
        break;

      case 1:
        cout << "時給を入力してください。" << endl;
        cin >> buffer;
        ret_char << setw(10) << left << buffer;
        buffer.clear();
        break;

      case 2:
        cout << "備考を入力してください。" << endl;
        cin >> buffer;
        ret_char << setw(50) << left << buffer;
        buffer.clear();
        break;
    }
  }
  tmp = ret_char.str();
  written_element = tmp.c_str();
  return written_element;
}