2013-08-06 8 views
1

У нас есть вопрос о проверке std::string, который содержит действительный набор символов UTF_8. Проблема заключается в том, что у меня есть программа std::string, которая может получить несколько недопустимых символов UTF-8 во время выполнения. В настоящее время я ссылаюсь на файл glib/utf8-validate.c для справки. Но типы данных, используемые glib, не являются std::string, поэтому я не могу использовать это.как проверить std :: string для кодировки UTF-8

Платформа QNX (разработка хоста Linux).

+0

Просто придираться, QNX * не * Linux -исходя из. Это совершенно отдельная операционная система и никак не связана с Linux. –

+1

Привет, joachim, спасибо за вход, в основном я хочу передать, что я работаю в среде без windows.hence упоминается так. – user2655475

+0

@JoachimPileborg Хотя вы правы, что QNX не является Linux, среда разработки QNX может работать на Linux и кросс-компиляция с целями QNX. Это то, что он указывал. Он также может работать в Windows или в самом QNX. См. Http://www.qnx.com/download/feature.html?programid=21179 для версии, размещенной на Linux. – kmort

ответ

1

Сначала вы должны всегда включать версию QNX в свой вопрос, потому что, например, версия gcc версии 6.3.2 (Neutrino) - 3.7.

Второе использование const char * c_str() const; для c-функций.

#include <stdio.h> 
#include <dbus/dbus.h> 
#include <string> 
#include <iostream> 

int main(void) 
{  
std::string test = "test"; 

std::cout << dbus_validate_utf8(test.c_str(), 0) << std::endl; 
return 0; 
} 

Но может быть это поможет вместо использования dbus_validate_utf8:

How to detect UTF-8 in plain C?

Или даже так:

http://utfcpp.sourceforge.net/

+0

Hi Maquefel, Спасибо за быстрый ответ. Мой фактический вопрос: как проверить std :: string для кодировки UTF-8, В основном я ищу фрагмент кода или функцию, которая примет строку std :: string в качестве входного и вернет true, если каждый символ в этой строке является допустимым уставом UTF-8 или ложным, если нет. Я не понимаю, как преобразование std :: string в строку C разрешает это, не могли бы вы объяснить? – user2655475

+0

Что такое версия вашей системы QNX и gcc? Или вы используете qcc? – Maquefel

+0

Он означает, что вы можете использовать 'word.c_str()', а затем использовать код * glibc * UTF8, который вы уже обнаружили (IE, utf8-validate.c). Кроме того, Xerces/Xsd из CodeSynthesis определенно делает это, но это может быть трудно понять в зависимости от вашего понимания. –