簡體   English   中英

錯誤:無法轉換 'std::__cxx11::basic_string<char> ::迭代器'</char>

[英]error: cannot convert ‘std::__cxx11::basic_string<char>::iterator’

我正在編寫一個程序來檢查輸入短語是否是回文。 在 MacBook Pro 上使用 Xcode 編譯可以正常工作。 在 zyBooks 網站上編譯返回錯誤。

如何更新我的代碼以解決此問題?

我的代碼是:

#include <iostream>
#include <string>
#include <cctype>
using namespace std;

int main()
{
    string userInput, palindromeCheck, reversedInput;
    getline(cin, userInput);
    
    palindromeCheck = userInput;
    
    remove(palindromeCheck.begin(), palindromeCheck.end(), ' ');
    palindromeCheck.erase(palindromeCheck.size() - 3, palindromeCheck.size());
    
    int temp = 1;

    while (temp < palindromeCheck.size() + 1)
    {
        reversedInput += palindromeCheck.at(palindromeCheck.size() - temp);
        ++temp;
    }
    if (reversedInput == palindromeCheck)
    {
        cout << userInput << " is a palindrome";
    }
    else
    {
      cout << userInput << " is not a palindrome";
    }

    cout << endl;
   return 0;
}

zyBooks 的完整錯誤代碼如下:

main.cpp: In function ‘int main()’:
main.cpp:14:33: error: cannot convert ‘std::__cxx11::basic_string<char>::iterator’ {aka ‘__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >’} to ‘const char*’
   14 |     remove(palindromeCheck.begin(), palindromeCheck.end(), ' ');
      |            ~~~~~~~~~~~~~~~~~~~~~^~
      |                                 |
      |                                 std::__cxx11::basic_string<char>::iterator {aka __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >}
In file included from /usr/include/c++/9/cstdio:42,
                 from /usr/include/c++/9/ext/string_conversions.h:43,
                 from /usr/include/c++/9/bits/basic_string.h:6493,
                 from /usr/include/c++/9/string:55,
                 from /usr/include/c++/9/bits/locale_classes.h:40,
                 from /usr/include/c++/9/bits/ios_base.h:41,
                 from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/ostream:38,
                 from /usr/include/c++/9/iostream:39,
                 from main.cpp:1:
/usr/include/stdio.h:178:32: note:   initializing argument 1 of ‘int remove(const char*)’
  178 | extern int remove (const char *__filename) __THROW;
      |                    ~~~~~~~~~~~~^~~~~~~~~~
main.cpp:20:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   20 |     while (temp < palindromeCheck.size() + 1)
      |            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~

不包含algorithm.h庫的remove() function 用於刪除系統中的現有文件。 此 function 的 function 簽名如下所示:

int remove(const char *_Filename)

另一方面,在使用algorithm.h之后,您現在可以將remove()用於迭代器:

_FIter remove<_FIter, _Tp>(_ForwardIterator __first, _ForwardIterator __last, const _Tp &__value)

問題是 function 沒有過載,它接受std::string object begin()end()作為 arguments。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 OSX“錯誤:無法轉換&#39;const std :: __ cxx11 :: basic_string”是什么意思 <char> “ 意思? 獲取“錯誤:無法轉換 'std::__cxx11::string* {aka std::__cxx11::basic_string<char> *}' 到 'const char*' 錯誤,同時將路徑作為參數傳遞</char> 嘗試生成隨機字母錯誤:無法轉換 'std::__cxx11::string {aka std::__cxx11::basic_string<char> }' 到 'char' 在分配</char> 字符串未正確復制並顯示錯誤:無法轉換 'std::__cxx11::string {aka std::__cxx11::basic_string<char> }'</char> 錯誤:無法從“向量”轉換“標簽” <std::vector<std::__cxx11::basic_string<char> &gt;&gt;' 到 ' 向量<std::__cxx11::basic_string<char> &gt;' </std::__cxx11::basic_string<char></std::vector<std::__cxx11::basic_string<char> (std::__cxx11::string) [T = std::__cxx11::basic_string<char> ; std::__cxx11::string = std::__cxx11::basic_string<char> ] 不能重載 錯誤:為&#39;operator std::string {aka std::__cxx11::basic_string 指定的返回類型<char> }&#39; 錯誤:沒有匹配的函數調用&#39;std :: map <std::__cxx11::basic_string<char> 錯誤:傳遞&#39;const字符串{aka const std :: __ cxx11 :: basic_string <char> }&#39;作為&#39;this&#39;參數 錯誤:“operator+=”不匹配(操作數類型為“long double”和“std::__cxx11::basic_string”<char> &#39;)
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM