八葉の日記

日々、感じたことをまとめる場として利用する

改行文字の有無判定と修正

与えられた文字列に対して、改行文字の有無を判断し、

改行文字がない場合は改行文字を追加するという関数を

作りたい。

 

★の部分で詰まる改行文字を追加しないといけないけどどうすればできる?

string使うとかはなし、古いコードでデバッグ文字に改行有無が混在しているため。

可能ならば、コンパイル時に処理が終了して、実行速度に影響がないと嬉しい

 

 

template<typename T, int N>
T*
SAMPLE(T(&x)[N])
{
 if (x[N - 2] == '\n')
 {
  return x;
 }

 //constの場合はここでconstを外す
 types<T>::type y[N + 1] = { 0 };
 strcpy_s(y, N, x);
 y[N - 1] = '\n';

 return y;★
}

int main()
{
for (int i = 0; i<10; i++) {

::Sleep(1000);
::OutputDebugString(TEXT(SAMPLE("Hello!")));

}
return 0;
}