为什么我的istream_iterator不起作用
Why does my istream_iterator not work?
这是我写的代码。我正在使用Visual Studio并学习如何使用标准模板库。当我尝试从源打印时,ostream_iterator
也不起作用。它给出了一个巨大的错误列表,那些我不可能理解的错误。
这是我尝试在Visual Studio中运行的完整代码。软件设置有问题吗?
#include <iostream>
#include <vector>
#include <list>
#include <iterator>
#include <functional>
using namespace std;
//stream_iterator
int main() {
vector<string> source = { "31", "3113" };
copy(istream_iterator<string>(cin), istream_iterator<string>(),back_inserter(source)); //can't understand why this won't work
return 0;
}
These below are the error messages.
1>------ Build started: Project: StreamIters, Configuration: Debug Win32 ------
1> Source.cpp
1>c:program files (x86)microsoft visual studio 12.0vcincludeiterator(256): error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(485): could be 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_streambuf<char,std::char_traits<char>> *)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(466): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(void *&)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(448): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(long double &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(430): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(double &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(411): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(float &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(392): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned __int64 &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(373): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(__int64 &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(353): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned long &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(335): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(long &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(317): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned int &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(291): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(int &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(272): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned short &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(237): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(short &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(218): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::_Bool &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(211): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::ios_base &(__cdecl *)(std::ios_base &))'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(204): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_ios<char,std::char_traits<char>> &(__cdecl *)(std::basic_ios<char,std::char_traits<char>> &))'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(198): or 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_istream<char,std::char_traits<char>> &(__cdecl *)(std::basic_istream<char,std::char_traits<char>> &))'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(1103): or 'std::basic_istream<char,std::char_traits<char>> &std::operator >><char,std::char_traits<char>,_Ty>(std::basic_istream<char,std::char_traits<char>> &&,_Ty &)'
1> with
1> [
1> _Ty=std::string
1> ]
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(1093): or 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,unsigned char &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(1086): or 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,unsigned char *)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(1079): or 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,signed char &)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeistream(1072): or 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,signed char *)'
1> while trying to match the argument list '(std::basic_istream<char,std::char_traits<char>>, std::string)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeiterator(255) : while compiling class template member function 'void std::istream_iterator<std::string,char,std::char_traits<char>,ptrdiff_t>::_Getval(void)'
1> c:program files (x86)microsoft visual studio 12.0vcincludeiterator(222) : see reference to function template instantiation 'void std::istream_iterator<std::string,char,std::char_traits<char>,ptrdiff_t>::_Getval(void)' being compiled
1> c:usersmahedocumentsvisual studio 2013projectsstreamitersstreamiterssource.cpp(19) : see reference to class template instantiation 'std::istream_iterator<std::string,char,std::char_traits<char>,ptrdiff_t>' being compiled
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
代码缺少标头<string>
。虽然使用的接口确实要求至少有一个可用的std::string
声明,但并不要求你包含的标头提供std::string
和/或对其操作的函数的定义。我没有安装 MSVC++,但似乎您包含的标头提供了std::string
的定义,但没有输入或输出运算符的声明。
根据经验,您永远不应该依赖间接包容。相反,您应该始终显式包含所有相关标头:尽管声明当前可能可用,但标头可能会更改为不包含其他标头。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- C++Matching Brackets 2解决方案不起作用
- 为什么unordered_set<string::iterator>不起作用?
- 为什么const_cast<iterator>(const_iterator)在Visual C++ 6.0中有效,而在Visual Studio .NET中不起作用?