Я пытаюсь найти общее решение c, которое можно использовать для выравнивания текста слева и справа от указанной ширины линии.
Примечание : текст может быть почти на любом международном языке, Engli sh, японский, китайский и т. д. c.
т.е.
std::wstring str1 = L"Hello1";
std::wstring str2 = L"Hello2";
std::cout << std::string(50, '-') << endl;
std::wcout << std::left << std::setw(25) << str1 << std::right << std::setw(25) << str2 << std::endl;
Производит следующее:
--------------------------------------------------
Hello1 Hello2
Строка «----» имеет ширину 50 символов (без учета новой строки), а две строки «Hello1» и «Hello2» выровнены по левому и правому краям.
Но проблема в следующем:
std::wstring str1 = L"Hello1";
std::wstring str2 = L"Hello2";
std::wstring str3 = L"こんにちは";
std::wstring str4 = L"你好";
std::cout << std::string(50, '-') << endl;
std::wcout << std::left << std::setw(25) << str1 << std::right << std::setw(25) << str2 << std::endl;
std::wcout << std::left << std::setw(25) << str3 << std::right << std::setw(25) << str4 << std::endl;
std::cout << std::left << std::setw(25) << "こんにちは" << std::right << std::setw(25) << "你好" << std::endl;
, который приводит к следующему:
--------------------------------------------------
Hello1 Hello2
S�kao `}
こんにちは 你好
- Я попытался найти способ выравнивания третий ряд справа без успеха, идеи?
- Я не понимаю, почему второй ряд представлен как «мусор», есть идеи о том, как исправить этот ряд без каких-либо серьезных изменений?