В чем разница между printf («% s»), printf («% ls»), wprintf («% s») и wprintf («% ls»)?
Рассмотрим этот пример программы:
#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.Имеет ли какое-либо значение, если в поле utf8 есть utst8, а в utf16 - widestr?