我必须遵循从共享点获得的字符串: \ u002fsites \ u002fblabla \ u002fShared Documents \ u002fkittens.xml
我试图将其转换为: / sites / blabla / Shared Documents / kittens.xml
我用谷歌搜索它,发现它是Unicode编码的,但是我找不到任何可以转换它的东西,技术上我可以编写一个小函数将所有“\ u002f”转换为“/”,但我不认为这是正确的做法。
如果任何人能够对此事有所了解,那将会非常有帮助。
由于
答案 0 :(得分:4)
我找到了一个解决我问题的库,我想分享解决方案,以防其他人偶然发现这个问题。
图书馆名为ICU
使用非常简单:
icu::UnicodeString converter = icu::UnicodeString(in.c_str(),in.length());
icu::UnicodeString newUstring = converter.unescape();
newUstring.toUTF8String(out);
当in
和out
为string
时。
答案 1 :(得分:0)
我不知道C ++中是否有准备好的功能,但你可以通过这个算法做到这一点:
1-find" \"使用字符串类中的find函数在第一个字符串中的字符,将其更改为" /" 2-从这一点省略4个nexts(包括u002)等等......
#include <iostream>
#include <string>
using namespace std;
string process(string str){
string result="";
for (int i=0;i<str.size();i++){
if(str[i]=='\\' ) {
result.push_back('//');
i+=5;
}
else
result.push_back(str[i]);
}
return result;
}
int main(){
string path;
getline(cin,path);
cout<<process(path)<<endl;
}
答案 2 :(得分:0)
如果该字符串是字符串文字,编译器应该采用
关心这个翻译;序列\uxxxx
是一个通用的角色名称&#34;。如果您正在阅读它的数据
从外部来源,我不知道任何标准功能
会改变它;你必须自己写。 (和
一旦你添加了所有的东西,正确的做法并不是那么简单
必要的错误检查。)