C++ 逐字符比较字符串

标签 c++ string comparison

我正在尝试为介绍性 C++ 类(class)进行字符串比较检查;这是一门在线类(class),不幸的是,讲师的 react 不是很好。对于当前的实验室,我需要对字符串数据执行大量操作。

目前,我正在努力检查一个字符串是否有任何重复的字符,如果发现重复,则删除当前位置的重复字符并将该字母的一个拷贝移动到该字母的开头字符串。仅对找到的第一个 double 执行此操作。

我已经设置了一个基本计数器来遍历字符串以查找匹配项,检查存储的字符(在每次迭代时更新)到字符串中的当前位置。

我尝试了多个字符串函数(将当前的 inputString[i] 与之前存储为第二个字符串 tempStore 的函数进行比较),但这些函数总是会出现字符转换错误。我已经尝试了下面的方法,但这现在给出了一个错误:“从‘char’到‘const char*’的无效转换。

inputString由用户给定,testAtestB定义为char类型

有什么想法吗?

while (opComplete == false) {

    if (i == 0) {
        i++;
    }

    else if (i == inputString.size()) {
        //Not Found
        opComplete = true;
    }

    else if (i > 0) {

        testA = inputString[i-1];
        testB = inputString[i];

        if (strcmp(testA,testB) != 0) {
            i++;
        }

        else {
            inputString.insert(0,inputString[i]);
            inputString.erase(i,1);
            inputString.erase(i-1,1);
            opComplete = true;
        }

    }

}

最佳答案

您的问题出在这一行:

inputString.insert(0,inputString[i]);

您在此处调用的 std::string.insert() 函数具有以下签名:

string& insert ( size_t pos1, const char* s );

所以它需要一个 const char 指针。但是,您将 inputString[i] 赋予它。 std::string.operator[] 的返回值是一个引用(如 here ),因此是错误。但是,当您到达 else 时,您的 testB 变量中已经有了所需的字符,因此您只需将行更改为

 inputString.insert(0, &testB);

您也不能将普通的 char 传递给 strcmp。您可以使用 operator==,或者根据您的情况,使用 operator!=

关于C++ 逐字符比较字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13356386/

相关文章:

javascript - 用 '+' 替换字符串中的所有空格

python - 链式比较中的按位 '&' 运算符

c# - CompareTo 的问题

c++ - OpenCV:如何读取 float 图像

c++ - Excel VBA : "Run-time error ' 4 9': Bad DLL calling convention" calling C++ dll

c++ - 如何构建仅算术模板对象?

c++ - 获取 QPushButton 按下的背景颜色

r - 如何将一串不同长度的数字和字母分成R中的不同列?

c# - 为什么在使用 IndexOf(string) 和 IndexOf(char) 时,非组合变音符号前面的空格会产生不同的作用?

c++ - 模板参数的编译时间比较