Рассмотрим эту примерную программу:
#include <cstdio>
#include <cwchar>
#include <string>
int main()
{
std::string narrowstr = "narrow";
std::wstring widestr = L"wide";
printf("1 %s \n", narrowstr.c_str());
printf("2 %ls \n", widestr.c_str());
wprintf(L"3 %s \n", narrowstr.c_str());
wprintf(L"4 %ls \n", widestr.c_str());
return 0;
}
Результат этого:
1 narrow
2 wide
Мне интересно:
- почему 3 и 4 не печатали
- какие различия между 1 и 3 и 2 и 4.
- Не имеет значения, если узкий str находится в utf8, а widestr - в utf16?