gpt4 book ai didi

c++ - toUTF8String 和本地引用

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:56 24 4
gpt4 key购买 nike

http://www.icu-project.org/apiref/icu4c/classicu_1_1UnicodeString.html#a05777d826515a20a0b2bb8f4108f9348

StringClass & toUTF8String (StringClass &result) 常量

将 UnicodeString 转换为 UTF-8 并将结果附加到标准字符串。

参数:结果标准字符串(或兼容对象)字符串的 UTF-8 版本附加到其中。

返回:字符串对象。

// My own function.
string toStdString(const UnicodeString& a_str)
{
string str;
a_str.toUTF8String(str);
return (str);
}
int main (void)
{
string a = toStdString("a");
string b = toStdString("b");

cout << "a:" << a << endl; // a
cout << "b:" << b << endl; // b

const char* a1 = toStdString("a").c_str();
const char* b1 = toStdString("b").c_str();

cout << "a1:" << a1 << endl; // b !!! Problem: Why not "a"?
cout << "b1:" << b1 << endl; // b

const char* a2 = a.c_str();
const char* b2 = b.c_str();

cout << "a2:" << a2 << endl; // a
cout << "b2:" << b2 << endl; // b

return (0);
}

最佳答案

toStdString 函数返回一个临时值,如果您不将它存储在某个地方,它就会消失。

在这个声明中

const char* a1 = toStdString("a").c_str();

您将指针存储到这个临时对象中。在语句结束时,这个临时字符串再次被销毁,指针指向任何地方。

稍后尝试使用指针会导致未定义的行为,并且任何事情都可能发生,包括显示一些其他字符串。

关于c++ - toUTF8String 和本地引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15860930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com