【问题标题】:error message of no suitable user-defined conversion [closed]没有合适的用户定义转换的错误消息[关闭]
【发布时间】:2022-01-24 03:00:26
【问题描述】:
 #include <iostream>
 #include <string.h>
 #include <strings.h>
 #include <algorithm>
 #include <bits/stdc++.h>
 #include <string>
 #include <algorithm>
 #include <iterator>
 #include <list>

 int main(){

char buffer[32] = {0};
std::string temp;
std::string apend;
//memset(buffer, '\0', sizeof(buffer));

std::cout << "Text in: \n";
  fgets(buffer, 32, stdin);
        for(int i = 0; i < strlen(buffer); ++i){
            for(int j = 0; j < strlen(buffer); ++j){
                if(buffer[i] == ' '){
                    buffer[i] = buffer[i+1];
                }
            }
        }

    for(int i=0; i < strlen(buffer); ++i){
        std::cout << buffer[i]; 
        temp += buffer[i];
    }

    reverse(temp.begin(), temp.end());
    std::cout << temp << std::endl;

    std::cout << "Enter a new string: \n" << std::endl;
    std::cin >> apend;
    temp.append(apend);

    for(auto i = temp.begin(); i != temp.end(); ++i){
        std::cout << *i <<" ";
    }
    std::vector<std::string>::iterator ptr1 = temp.begin();

在'ptr1 = temp.begin() 处有一条错误消息说没有合适的用户定义转换...,我就是无法处理这个问题。有人可以帮忙看看我的做法吗?谢谢!

return -1;

 }

【问题讨论】:

  • 您可以删除几乎所有的代码,但仍然会显示问题。不要用这些噪音浪费人们的时间。
  • 您需要使用正确的类型。 decltype(temp)::iterator ptr1 = temp.begin(); - 也就是说,ptr1std::string::iterator,而不是 std::vector&lt;std::string&gt;::iterator
  • #include &lt;bits/stdc++.h&gt; -- 摆脱这个。 &lt;strings.h&gt; 是什么?此外,不需要重复调​​用 strlen 以从字符串中删除空格的低效双嵌套 for 循环。
  • @Embeddeder 我的意思是正是,正如我写的那样。
  • 我上面写的没有auto。我在下面的回答中使用了auto。两者都导致ptr1 成为std::string::iterator

标签: c++


【解决方案1】:

您需要使用正确的类型 decltype(temp)::iterator ptr1 = temp.begin(); - 也就是说,ptr1std::string::iterator,而不是 std::vector&lt;std::string&gt;::iterator。所以为了让你的 sn-p 编译,改变

std::vector<std::string>::iterator ptr1 = temp.begin();

auto ptr1 = temp.begin(); // ptr1 is a std::string::iterator

【讨论】:

  • 感谢您耐心而明确地回答我!
  • @Embeddeder 完全没问题。很高兴它有帮助,不客气!
猜你喜欢
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多