有没有办法按字母顺序对出现在同一行的单词进行排序?我知道如果我在一个新行上有单词,我可以使用以下方法对它们进行排序:
vector<string> file;
string line;
file.clear();
ifstream infile("foo.txt", ios_base::in);
infile.seekg(3);
while (getline(infile, line)){
file.push_back(line);
}
sort(file.begin(), file.end());
ofstream outFile;
outFile.open("foo.txt");
for (const auto &e : file) outFile << e << "\n";
但是如果单词在文件中的一行(未分隔空格),例如:catapebat
(cat ape bat),该怎么办?有没有一种简单的方法在C ++中执行此操作?我不会做getline
位,因为我只抓一条线?我该如何处理这个问题?
答案 0 :(得分:2)
getline
读取一行。istringstream
vector<string>
答案 1 :(得分:0)
我建议你找一个像this这样的单词字典,并将每个单词与字符串的开头进行比较。如果匹配,则从字符串的开头删除那么多字符并将该字存储在数组中。重复此操作,直到获得包含所有单词的数组,然后按字母顺序对数组进行排序。
注意:可能值得浏览整个字典并跟踪每个匹配的字词。字典用完后,在继续之前选择最长的匹配作为单词。