vs2015编译c++小程序报错,但是过段时间编译又正常是怎么回事?
阿神
阿神 2017-04-17 12:59:02
0
2
803

程序的目的是收集输入的字符串,看有多少符合特定的字符串

#include <algorithm>
#include <iostream>
#include <vector>
#include <list>
#include <string>
using namespace std;
int main()
{
    list<string> ls;
    string s;
    while (cin>> s)
        ls.push_back(s);
    cout<< count(s.cbegin(), s.cend(), "a");
}

编译时报错如下

1>------ 已启动生成: 项目: ConsoleApplication1, 配置: Debug Win32 ------
1>  源.cpp
1>e:\vs2015\vc\include\xutility(3186): error C2446: “==”: 没有从“const char *”到“int”的转换
1>  e:\vs2015\vc\include\xutility(3186): note: 没有使该转换得以执行的上下文
1>  e:\vs2015\vc\include\xutility(3197): note: 参见对正在编译的函数 模板 实例化“std::iterator_traits<_InIt>::difference_type std::_Count_np<const char*,char[2]>(_InIt,_InIt,const _Ty (&))”的引用
1>          with
1>          [
1>              _InIt=const std::codecvt<wchar_t,char,_Mbstatet>::_Byte *,
1>              _Ty=char [2]
1>          ]
1>  c:\users\0e\documents\visual studio 2015\projects\consoleapplication1\consoleapplication1\源.cpp(13): note: 参见对正在编译的函数 模板 实例化“int std::count<std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>,char[2]>(_InIt,_InIt,const _Ty (&))”的引用
1>          with
1>          [
1>              _InIt=std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>,
1>              _Ty=char [2]
1>          ]
1>e:\vs2015\vc\include\xutility(3186): error C2040: “==”:“int”与“const char [2]”的间接寻址级别不同
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

这是第一次编译时的情况,后来我在相同项目下写了别的程序,当再次把该程序覆盖之后编译又完全正常,是怎么回事?是项目冗余问题吗?

好吧,我复制了答案中的代码,所以没问题。一楼你改了代码也不说一声,我愣是没看出来

阿神
阿神

闭关修行中......

全部回复(2)
刘奇
#include <algorithm>
#include <iostream>
#include <vector>
#include <list>
#include <string>
using namespace std;
int main()
{
    list<string> ls;
    string s;
    while (cin>> s)
        ls.push_back(s);
    cout<< count(ls.begin(), ls.end(), "a");
}

主要“cout<< count(s.cbegin(), s.cend(), "a");”错误,s是一个string,其内元素不能与字符串对比。

Peter_Zhu

类型不匹配。
如果要从list中找应该是:

cout<< count(ls.begin(), ls.end(), "a");

如果要从s中找应该是

cout<< count(s.cbegin(), s.cend(), ‘a’);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板