c++ - 检查文本文件是否按字母顺序排列

标签 c++

我有以下代码,它扫描一个文本文件并获取几行,我正在尝试实现一些输入验证,因此如果用户输入了错误的文件,它会提示用户并关闭程序而不是崩溃。我目前已经添加了一些东西,但我正在尝试实现一些东西来检查文件是否按字母顺序排序......

我目前尝试过 sort(word.begin(), word.end()); 但这对单词进行了排序...我实际上并不想对单词进行排序我只是想检查它们是否按字母顺序排列如果不是,请关闭程序...我该如何实现?

文件的布局是

单词

定义

类型

空行

重复...

例如

a
the letter a 
n

b
the letter b
n

c  
the letter c  
n

...end

最佳答案

如果您只想检查单词是否按字母顺序排列,为什么不检查第一个和第二个字符串?如果它们是有序的,你就去你的第二个和第三个......等等,直到其中一个没有被排序或文件结束。如果你做到了最后,就意味着他们被订购了..

string word, definition, type, blank, aux;

while (getline(dictionaryFile, word) &&
        getline(dictionaryFile, definition) &&
        getline(dictionaryFile, type) &&
        getline(dictionaryFile, blank)) {

if (strcmp(aux.c_str(), word.c_str()) > 0) return;
    else aux=word; 
...
...
...
}

关于c++ - 检查文本文件是否按字母顺序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19449514/

相关文章:

c++ - 将元组转换为对

C++ 友元类 std::vector

c++ - 创建类的对象时函数调用的顺序

c++ - 使用字符串生成 IP 地址

c++ - 如何使用 mingw 构建 libpng

c++ - 为什么我总是得到带有默认参数的对象?

c# - 调用 PInvoke 函数 '[...]' 使堆栈不平衡

C++ getline 方法不起作用

c++ - 由于错误的 Makefile 语法而未定义对库的引用?

c++ - std::vector::erase/remove_if 导致 nullptr