我目前正在编写一个编程作业,我应该从一致性中重新创建一段文本。我想首先根据线/节数对所有文本行进行排序。以下是样本一致性的样子(数字表示经文):
6 and I will *dwell in the house of
5 presence of my *enemies. You anoint my
4 I will fear no *evil, for you are
6 and love will *follow me all the days
6 Surely your *goodness and love will
3 my soul. He *guides me along
5 You anoint my *head with oil; my cup
1 shepherd, I *lack nothing.
使用下面的代码,我已将文件中的每一行读入矢量。
string inFileName;
ifstream conFile;
vector<string> conVec;
string info;
cout << "Welcome to the Concordance sorter!\n";
cout << "Please enter the file you would like to sort:\n\n";
cin >> inFileName;
conFile.open(inFileName.c_str());
if (conFile)
{
while (!conFile.eof())
{
while (getline(conFile, info))
{
conVec.push_back(info);
}
}
conFile.close();
}
有没有办法让我只看字符串的第一个字符(诗句编号)然后用它来将矢量按数字顺序排序?我知道排序会如何发生,我只是不知道如何使用字符串中的第一个字符,或者甚至根本没有方法可以做到这一点。任何建议都会有很大的帮助!
答案 0 :(得分:1)
我们不知道conVec
和info
的类型,但conVec
的元素类型是char*
还是{{ 1}},std::string
可以接收字符串的第一个字符。
答案 1 :(得分:0)
使用std::sort功能可以帮助您:
bool sortVector(char *a, char *b) {
return *a < *b;
}
并将其称为
std::sort(conVec.start(), conVec.end(), sortVector);
这将适用于chars或std :: strings,只需将类型设置为正确。