Categories: Uncategorized

How to create a C++ function that can take argment of both char* and wchar_t*

Source.
Create a traits class that is used as specialized template. Specialize it for char and wchar_t. Generic template is not defined because this function is only for char and wchar_t.

#include 
#include 

template struct kansuu_traits;
template struct kansuu_traits
{
 static FILE* open(const char* p)
 {
  return fopen(p, "r");
 }
};
template struct kansuu_traits
{
 static FILE* open(const wchar_t* p)
 {
  return _wfopen(p, L"r");
 }
};

template void kansuu(const cT* p)
{
 FILE* f = kansuu_traits::open(p);
 fclose(f);
}

int main(int argc, char* argv[]){
 kansuu(L"C:\\TEST\\Text.txt");
 kansuu("C:\\TEST\\Text.txt");
 
 return 0;
}
admin

Recent Posts

Obtain global IP in bash

In current Internet environment, every PC is assigned a private IP. If global IP is…

3 years ago

Create log file in the directory of the script in Python

__file__ is the script file itself. From python3.9 above, it is an absolute path, otherwise…

3 years ago

RichTextBox’s font changes automatically in C#

You need to clear these two flags IMF_DUALFONT and IMF_AUTOFONT to keep font unchanged.

3 years ago

Test post to check image URL

This is an image inserted by wordpress 'Add Media'

3 years ago

msbuild says ‘target does not exist’

I don't know what is going wrong but... How to fix it Open the solution…

3 years ago

Creating a break point that hits on calling win32 api

Create a break point that hits when CreateProcess was called Enter a Function Breakpoint Enter…

4 years ago