把一个单词分成更小的部分
Dividng a word into smaller segments
我正在尝试实现一个后缀树。
int _tmain(int argc, _TCHAR* argv[])
{
std::string text;
cin >> text;
int n = text.size();
std::string first_array[sizeof(text) / sizeof(text[0])];
for (int i = 0; i < text.size();i++)
{
first_array[i] = text.substr(i, n - i);
}
int T = sizeof(first_array) / sizeof(first_array[0]);
sort(first_array, first_array + T);
cout << endl << "The sorted tree:" << endl;
for (int j = 0; j < sizeof(first_array) / sizeof(first_array[0]); j++)
cout << j+1 << " | " << first_array[j] << endl;
}
这是我的密码。例如,如果用户输入"你好",那么程序应该并且我希望它向我显示以下内容:
1 | ello
2 | hello
3 | llo
4 | lo
5 | o
但是,它却向我展示了这一点(这是错误的,不是我想要的):
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | ello
25 | hello
26 | llo
27 | lo
28 | o
sizeof(std::string)
报告C++字符串对象的大小(显然是28字节大),这与它所包含的字符串的实际长度无关。使用".size()"
成员函数计算字符串中包含的字符数并调整数组大小。
另一种选择是使用std::vector<std::string>
,并让它对内存管理进行排序:
std::vector<std::string> first_array;
for (int i = 0; i < text.size();i++)
first_array.push_back( text.substr(i, n - i) );
为了完整起见,这里有一个工作程序:
std::string text;
cout << "Please enter your text: ";
cin >> text;
std::vector<std::string> first_array;
for (int i = 0; i < text.size();i++)
first_array.push_back( text.substr(i, n - i) );
sort(first_array.begin(), first_array.end());
cout << endl << "Suffix Tree (alphabetical order):" << endl;
std::vector<std::string>::iterator ptr;
for(ptr=first_array.begin(); p!=first_array.end(); ptr++)
cout << *ptr;
cout << endl;
相关文章:
- 使用std::mt19937从字符串中返回一个随机单词
- C++-字符串是否包含一个带有简单循环的单词
- 为什么这个程序返回最后一个单词而不是最长的单词?
- 3-3. 编写一个程序来计算每个不同单词在其输入中出现的次数
- 计算单词中的音节数,但考虑到单词中彼此相邻的任何元音都算作一个音节
- 如何检查流中文件的下一个单词是否为 alpha?
- 给定一个单词数组和一个字符串,如何计算给定字符串中的所有单词
- 计算一个单词在映射中出现的次数 - 使用 transform() - 调用不匹配
- 如何制作一个程序,它使用特定单词加密和解密消息?
- 创建一个函数,返回给定单词在C++中的频率
- 如何将一个单词拆分成字母,并将它们放入一个无序的列表/集合中
- 输入一个字符串并将其除以单词
- 我有一个字符串变量单词= "APA"
- 将字符串中的单个单词替换为另一个单词
- 如何创建一个函数,该函数在文本中查找单词的匹配项,包括跳过
- 如何将行的第一个单词作为一个变量,将行的其余部分作为另一个变量进行归档/存储
- 给定一个字符串,只要您看到单词"ant"替换到字符串中,单词就会"termite"
- 当字符串中只有一个"GOOD"字符串可用时,从没有空格的字符串中提取第一个单词的最佳和有效方法?
- 检查一个文本文件中的单词是否在另一个文本文件 (C++) 中
- 如何插入一个单词并将字母放在2D数组中的不同索引中