【发布时间】:2010-12-12 14:26:50
【问题描述】:
我正在尝试将 C++ 字符串拆分为多个子字符串 (NUM_LINES),每个子字符串的长度为 CHAR_PER_LINE。
for(int i = 0; i < NUM_LINES; i++) {
lines[i] = totalstring.substr(i*CHAR_PER_LINE,CHAR_PER_LINE);
}
只要字符串中没有特殊字符,就可以正常工作。否则 substr() 会得到一个不是 CHAR_PER_LINE 字符长的字符串,但会在一个特殊字符之前停止并退出循环。
有什么提示吗?
好的,编辑: 1)我绝对没有达到我的字符串的结尾。如果我的 totalstring.length() 是 1000 并且我在第一行有一个特殊字符(即字符串的第一个 CHAR_PER_LINE (30) 个字符),则循环退出。
2) 我遇到问题的特殊字符例如“ö”和“-”(长字符)
编辑 2:
std::string text = "aaaabbbbccccdödd";
std::string line[4];
for(int i = 0; i < 4; i++)
line[i] = text.substr(i*4,4);
for(int i = 0; i < 4; i++)
std::cout << line[i] << "\n";
这个例子有效。我得到 ö 的 '%'。 所以问题不在于 substr()。对不起。我正在使用 Cairo 创建一个 gui,似乎是我的 Cairo 输出造成了麻烦,而不是 substr()。
【问题讨论】:
-
请定义“特殊字符”
-
编写一个我们可以测试的可编译程序。并在我们可以看到的地方发布输入和预期输出。最好输入小于 1000 个字符。