Typ wstring i możliwość tworzenia polskich napisów

0

Cześć!

Mam taki problem. Próbuję stworzyć plik .xls, za pomocą biblioteki xlsLib. Problem polega na tym, że przekazując metodzie, zapisującej tekst do komórki arkusza, tekst z polskimi znakami (jako char * ) dostaję komunikat w komórce arkusza, że nastąpił błąd konwersji ( iconv failed! ).

Próbowałem użyć wstring , jednak teraz dostaję komunikat od kompilatora: Illegal byte sequence w miejscach, gdzie były polskie znaki.

Załączę kod:

#include <xlslib.h>
#include <string>

using namespace xlslib_core;
using namespace std;

void utworzNaglowekTabeli(worksheet * arkusz);

int main()
{
	workbook nowySkoroszyt;
	
	worksheet * nowyArkusz = nowySkoroszyt.sheet("Arkusz Testowy");
	
	utworzNaglowekTabeli(nowyArkusz);
	
	if (nowySkoroszyt.Dump("Proba.xls") != NO_ERRORS)
		cout << "BŁĄD" << endl;
	
	return 0;
}

void utworzNaglowekTabeli(worksheet * arkusz)
{
	wstring tytulyKolumn[14] =
		{L"Od kogo", L"U kogo", L"Narodowość",
		L"Rodzaj umowy", L"Nazwisko", L"Imię", 
		L"Stanowisko", L"Etat", L"Zatr. od", L"Zatr. do", 
		L"Telefon", L"Stopień", L"Termin", L"Do kiedy badanie"};
	
	wstring tytulyKomorekScalonych[3] =
		{L"Pracodawca", L"Okres zatrudnienia", L"Niepełnosprawność"};
	
	arkusz->merge(0, 0, 0, 1);
	arkusz->merge(0, 8, 0, 9);
	arkusz->merge(0, 11, 0, 12);
	
	arkusz->label(0, 0, tytulyKomorekScalonych[0], NULL);
	arkusz->label(0, 8, tytulyKomorekScalonych[1], NULL);
	arkusz->label(0, 11, tytulyKomorekScalonych[2], NULL);
	
	for (int i = 0; i < 14; i++)
		arkusz->label(1, i, tytulyKolumn[i], NULL);
}

Komunikat błędu:

$ g++ test2.cpp -I /xlslib/xlslib/src/ -lxls -liconv -o test.exe
test2.cpp: In function 'void utworzNaglowekTabeli(xlslib_core::worksheet*)':
test2.cpp:31:27: error: converting to execution character set: Illegal byte sequence
   {L"Od kogo", L"U kogo", L"Narodowo▒▒",
                           ^~~~~~~~~~~~~
test2.cpp:32:33: error: converting to execution character set: Invalid argument
   L"Rodzaj umowy", L"Nazwisko", L"Imi▒",
                                 ^~~~~~~
test2.cpp:34:15: error: converting to execution character set: Invalid argument
   L"Telefon", L"Stopie▒", L"Termin", L"Do kiedy badanie"};
               ^~~~~~~~~~
test2.cpp:37:42: error: converting to execution character set: Illegal byte sequence
   {L"Pracodawca", L"Okres zatrudnienia", L"Niepe▒nosprawno▒▒"};
                                          ^~~~~~~~~~~~~~~~~~~~

Proszę o pomoc, dzięki.
Michał.

1

A jakie jest kodowanie pliku źródłowego?

0

O kurcze. Nie wiem jak to się stało, ale mam ustawione na ANSI.

Dzięki! Działa!

Michał.

1 użytkowników online, w tym zalogowanych: 0, gości: 1