gpt4 book ai didi

c++ - remove_if 尝试删除空格时抛出错误

转载 作者:行者123 更新时间:2023-11-30 02:55:59 25 4
gpt4 key购买 nike

我正在尝试从字符串中删除空格。但抛出错误。

我的代码哪个参数做错了..感谢您的查看

我的主要功能

#include <algorithm>
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;


int main()
{
string myText;
myText = readText("file.txt");
myText.erase(remove_if(myText.begin(), myText.end(), isspace), myText.end());
cout << myText << endl;

return 0;
}

下面是我尝试编译时出现的错误。

encrypt.cpp: In function ‘int main()’:
encrypt.cpp:70:70: error: no matching function for call to ‘remove_if(std::basic_string<char>::iterator, std::basic_string<char>::iterator, <unresolved overloaded function type>)’
encrypt.cpp:70:70: note: candidate is:
/usr/include/c++/4.6/bits/stl_algo.h:1131:5: note: template<class _FIter, class _Predicate> _FIter std::remove_if(_FIter, _FIter, _Predicate)

最佳答案

你得到这个错误是因为有两个名称为 isspace 的函数。

  1. locale header 中定义,namespace std:

    template<class charT>
    bool std::isspace(charT ch, const locale& loc);
  2. cctype header 中定义,全局命名空间:

    int isspace( int ch );

所以,如果你想使用第二个函数,你有两种方法:

  1. 不要使用using namespace std。我更喜欢它。
  2. 使用 :: 调用函数,定义在全局命名空间

    remove_if(myText.begin(), myText.end(), ::isspace)
    // ^^

关于c++ - remove_if 尝试删除空格时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15985612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com