2013-12-24 5 views
0

У меня есть строка с не-ASCII символов, например std::string word ("żółć"); или std::string word ("łyżwy"); мне нужно, чтобы преобразовать его правильно const char * для того, чтобы позвонить system(my_String_As_A_Const_Char_Pointer);Non-ASCII символы - преобразование из станд :: строки на символ *

Я работаю над Linux.

Как я могу это сделать?

+1

'word.c_str()' может работать – Bojangles

+0

'c_str()' дает вам 'const char *'. Или ваш вопрос о кодировании? В этом случае вам нужно четко указать, какую кодировку вы используете, и какую кодировку требуется системе. Итак, расскажите подробнее о кодировках. –

+0

Спасибо, но проблема была в другом месте, которое не связано с вопросом. 'c_str()' отлично работает. – enedil

ответ

4

Вы можете использовать функцию члена std::string::c_str. Он вернет const char *, который может использоваться в функциях, которые принимают этот тип аргумента. Вот пример:

int main(int, char*[]) { 
    std::string word("żółć"); 
    const char* x = word.c_str(); 
    std::cout << x; 
} 

И here «s живой пример.

1

С этими преобразованиями единственное, что нужно заботиться, - это смешивать широкие символы с нормальными символами (что ужасно терпит неудачу). Вы используете std: string, поэтому c_str() отлично подходит для вытягивания const char * для перехода к другому вызову библиотеки.

+2

Пока кодировки совпадают. –

Смежные вопросы