У меня есть строка с не-ASCII-символами, например std::string word ("żółć");
или std::string word ("łyżwy");
Мне нужно правильно преобразовать его в const char *
, чтобы вызвать system(my_String_As_A_Const_Char_Pointer);
Я работаю над Linux.
Как мне это сделать?
Вы можете использовать функцию std::string::c_str
. Он вернет const char *
который может использоваться в функциях, которые принимают этот тип аргумента. Вот пример:
int main(int, char*[]) {
std::string word("żółć");
const char* x = word.c_str();
std::cout << x;
}
И вот живой пример.
С этими преобразованиями единственное, что нужно заботиться, - это смешивать широкие символы с обычными символами (что не получается ужасно). Вы используете std: string, поэтому c_str() отлично подходит для вытягивания const char * для перехода к другому вызову библиотеки.
word.c_str()
может работатьc_str()
дает вам постоянныйconst char*
. Или у тебя вопрос по кодированию? В этом случае вам необходимо четко определить, какую кодировку вы используете и какаяsystem
кодирования нужна. Итак, расскажите нам больше о кодировках.