Не-ASCII символы - преобразование из std :: string в char *

0

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

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

Как мне это сделать?

  • 1
    word.c_str() может работать
  • 0
    c_str() дает вам постоянный const char* . Или у тебя вопрос по кодированию? В этом случае вам необходимо четко определить, какую кодировку вы используете и какая system кодирования нужна. Итак, расскажите нам больше о кодировках.
Показать ещё 2 комментария
Теги:
c++11
type-conversion
non-ascii-characters

2 ответа

4
Лучший ответ

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

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

И вот живой пример.

1

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню