【发布时间】:2014-09-26 18:50:15
【问题描述】:
假设我有一个string s = "101870002PTäPO PVä #Person Tätigkeitsdarstellung 001100001&0111010101101870100092001000010"
当我执行substring(30,40) 时,它会返回以空格开头的“#Person Tätigkeitsdarstellung”。
我猜它是在计算字节而不是字符。
通常字符串的大小为 110,当我执行 s.length() 或 s.size() 时,由于 3 个特殊字符,它返回 113。
我想知道是否有办法避免在返回值的开头出现这个空白。
感谢您的帮助!
【问题讨论】:
-
不是字节,也不是直接,而是
char。如果你对存储在std::string中的字符串进行了变长编码,则必须自己处理。 -
Normally the size of the string is 110 and when I do a s.length() or s.size() it returns 113 because of the 3 special characters.那么这意味着字符串不是 110个字符,而是113个字符。 size() 函数不会说谎。另外,这些“特殊字符”是什么?回车,控制字符,...? -
s.length() 给我 110 我再加一个 ä 然后给我 111 再加一个 # 然后它给我 112 再加一个 & 猜猜它会返回什么,惊喜 113。你能提供有关您的机器和 ide 的信息,也许这些是导致问题的原因。但是如果您想要我可以编写一个函数,如果您的不起作用,我可以使用 s.substr() 做同样的工作。
-
@PaulMcKenzie 我所说的特殊字符是德语字符。
-
@PaulMcKenzie size 函数不会说谎,但它也不会返回字符串中的字符数;只有
char的数量。
标签: c++ string substring special-characters substr