相关疑难解决方法(0)

如何在C++正则表达式中使用Unicode范围

我必须在C++中的正则表达式中使用unicode范围.基本上我需要的是有一个正则表达式来接受所有有效的unicode字符.我只是尝试了测试表达式并面临一些问题.


std::regex reg("^[\\u0080-\\uDB7Fa-z0-9!#$%&'*+/=?^_`{|}~-]+$");
Run Code Online (Sandbox Code Playgroud)

问题出在\\u哪?

c++ regex

6
推荐指数
1
解决办法
3435
查看次数

C++中的Unicode字符串索引

我来自python,你可以使用'string [10]'按顺序访问一个字符.如果字符串是用Unicode编码的,它会给我预期的结果.但是当我在C++中对字符串使用索引时,只要字符是ASCII就可以工作,但是当我在字符串中使用Unicode字符并使用索引时,在输出中我将得到像/ 201这样的八进制表示.例如:

string ramp = "Ðð??ŠšÝýÞþŽž";
cout << ramp << "\n";    
cout << ramp[5] << "\n";
Run Code Online (Sandbox Code Playgroud)

输出:

Ðð??ŠšÝýÞþŽž
/201
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,如何在字符串表示中访问该字符,或者如何将八进制表示转换为实际字符?

c++ string unicode

5
推荐指数
2
解决办法
2232
查看次数

C++对特殊字符如ü

我无法使用C++中的tolower()函数将字符串转换为小写.使用普通字符串时,它会按预期工作,但不会成功转换特殊字符.

我如何使用我的功能:

string NotLowerCase = "Grüßen";
string LowerCase = "";
for (unsigned int i = 0; i < NotLowerCase.length(); i++) {
    LowerCase += tolower(NotLowerCase[i]);
    }
Run Code Online (Sandbox Code Playgroud)

例如:

  1. 测试 - >测试
  2. TeST2 - > test2
  3. Grüßen - > gr ???? en
  4. (§) - >()

你可以看到,3和4没有按预期工作

我该如何解决这个问题?我必须保留特殊字符,但是小写.

c++ character-encoding htmlspecialchars

5
推荐指数
1
解决办法
2875
查看次数

计算 std::string 中的实际字符数(不是字符)?

我可以计算 std::string 包含的“字符数”而不是字节数吗?例如,std::string::size返回std::string::length字节数(字符):

\n
std::string m_string1 {"a"};\n// This is 1\nm_string1.size();\n\nstd::string m_string2 {"\xd1\x97a"};\n// This is 3 because of Unicode\nm_string2.size();\n
Run Code Online (Sandbox Code Playgroud)\n

有没有办法获取字符数?例如要获得它们m_string2有2个字符。

\n

c++ string unicode

3
推荐指数
1
解决办法
190
查看次数