Tôi đã có mã:Cách khởi tạo và in std :: wstring?
std::string st = "SomeText";
...
std::cout << st;
và hoạt động tốt. Nhưng bây giờ nhóm của tôi muốn di chuyển đến wstring
. Vì vậy, tôi đã cố gắng:
std::wstring st = "SomeText";
...
std::cout << st;
nhưng điều này đã cho tôi một lỗi biên dịch:
Error 1 error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(const std::basic_string<_Elem,_Traits,_Ax> &)' : cannot convert parameter 1 from 'const char [8]' to 'const std::basic_string<_Elem,_Traits,_Ax> &' D:...\TestModule1.cpp 28 1 TestModule1
Sau khi tìm kiếm trên web tôi đọc rằng tôi nên xác định nó như:
std::wstring st = L"SomeText"; // Notice the "L"
...
std::cout << st;
này biên soạn nhưng in "0000000000"
thay vì "SomeText"
.
Tôi đang làm gì sai?
Cân nhắc sử dụng thư viện unicode ICU - [link] (http://icu-project.org/apiref/icu4c/index.html). Nó hỗ trợ unicode và có nhiều tính năng hữu ích. đặc biệt là nếu bạn muốn thao tác các chuỗi đó. – WeaselFox
@Weasel: Tại sao trên thế giới bạn cần một thư viện riêng để làm việc với các chuỗi Unicode? –
từ kinh nghiệm của tôi tốt hơn nhiều của nó để sử dụng một thư viện riêng biệt để thao tác các chuỗi wchar (tìm kiếm, thay thế vv) hoặc các chuỗi nhiều byte khác. – WeaselFox