非ASCII字符 - 从std :: string转换为char *

时间:2013-12-24 15:10:11

标签: c++ linux c++11 type-conversion non-ascii-characters

我有一个包含非ASCII字符的字符串,例如std::string word ("żółć");std::string word ("łyżwy"); 我需要将其正确转换为const char *才能调用system(my_String_As_A_Const_Char_Pointer);

我在Linux上工作。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您可以使用std::string::c_str成员函数。它将返回一个const char *,可以在接受该类型参数的函数中使用。这是一个例子:

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

here是一个现实的例子。

答案 1 :(得分:1)

通过这些转换,唯一需要关心的是将宽字符与普通字符混合(这种情况非常糟糕)。您正在使用std:字符串,因此c_str()可以用于提取const char *以传递给其他库调用。