Language: C++

#include <bits/stdc++.h>
#include <stdio.h>
#include <math.h>
using namespace std;
typedef long long ll;
typedef vector<int> VI;
ll mm=1000000000;ll MM=mm+7;
#define rep(i, n) for(int i=0;i<n;i++)

int main(){
  int h,w;
  cin >> h >> w;
  vector<vector<char>> s(h,vector<char>(w));
  rep(i,h){
	rep(j,w){
     cin >> s.at(i).at(j);
    }
  }
  vector<vector<int>> ss(h,vector<int>(w));
  rep(i,h){
	rep(j,w){
      if(s.at(i).at(j)=='#') continue;
      else{
        bool a=false;
        bool b=false;
        bool c=false;
        bool d=false;
        if(i==0)a=true;
        if(j==0)b=true;
        if(i==h-1)c=true;
        if(j==w-1)d=true;
        if(a && b) {
          if(s.at(i).at(j+1)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j+1)=='#')ss.at(i).at(j)++;
        }
        else if(a && d){
          if(s.at(i).at(j-1)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j-1)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j)=='#')ss.at(i).at(j)++;
        }
        else if(b && c){
		  if(s.at(i-1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i-1).at(j+1)=='#')ss.at(i).at(j)++;
          if(s.at(i).at(j+1)=='#')ss.at(i).at(j)++;
        }
        else if(c && d){

      if(s.at(i-1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i-1).at(j-1)=='#')ss.at(i).at(j)++;
          if(s.at(i).at(j-1)=='#')ss.at(i).at(j)++;
        }
        else if(a ){
          if(s.at(i).at(j+1)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j+1)=='#')ss.at(i).at(j)++;
           if(s.at(i).at(j-1)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j-1)=='#')ss.at(i).at(j)++; 
        }
        else if(b ){
          if(s.at(i).at(j+1)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j+1)=='#')ss.at(i).at(j)++;
           if(s.at(i-1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i-1).at(j+1)=='#')ss.at(i).at(j)++;          
        }
        else if(c ){
          if(s.at(i-1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i-1).at(j+1)=='#')ss.at(i).at(j)++;
          if(s.at(i).at(j+1)=='#')ss.at(i).at(j)++;
          if(s.at(i-1).at(j-1)=='#')ss.at(i).at(j)++;
          if(s.at(i).at(j-1)=='#')ss.at(i).at(j)++;
        }
        else if(d ){
          if(s.at(i).at(j-1)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j-1)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i-1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i-1).at(j-1)=='#')ss.at(i).at(j)++;
        }
        else {
          if(s.at(i).at(j+1)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j+1)=='#')ss.at(i).at(j)++;
           if(s.at(i).at(j-1)=='#')ss.at(i).at(j)++;
          if(s.at(i+1).at(j-1)=='#')ss.at(i).at(j)++; 
           if(s.at(i-1).at(j)=='#')ss.at(i).at(j)++;
          if(s.at(i-1).at(j+1)=='#')ss.at(i).at(j)++;
          if(s.at(i-1).at(j-1)=='#')ss.at(i).at(j)++;          
        }
        s.at(i).at(j)=char(ss.at(i).at(j)+'0');
      }
      }
    }
    rep(i,h){
		rep(j,w){
          cout << s.at(i).at(j);
          if(j==w-1) cout <<　"" << endl;
        }
    }        
}

Compiler output:
a.cc:98:29: error: extended character 　 is not valid in an identifier
   98 |           if(j==w-1) cout <<　"" << endl;
      |                             ^
a.cc: In function 'int main()':
a.cc:98:29: error: '\U00003000' was not declared in this scope
   98 |           if(j==w-1) cout <<　"" << endl;
      |                             ^~