Cin没有操作数>>

时间:2012-04-16 23:18:39

标签: c++ iostream cin

我不明白为什么这不起作用。出于某种原因,我收到了错误:

error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion)

如果有帮助,我在Visual Studio2010 C ++ Express中这样做。不知道为什么它给我这个错误我已经使用cin ...

完成了其他程序

我的代码:

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;

int main(int argc, char* argv){
    string file;

    if (argc > 1)
    {
        file = argv[1];
    }
    else
    {
        cout << "Please Enter Your Filename: ";
        cin >> file;
    }
}

2 个答案:

答案 0 :(得分:6)

包括<string>

最重要的是,我建议您使用getline代替&gt;&gt;将停在输入中的第一个单词。

示例:

std::cin >> file; // User inputs C:\Users\Andrew Finnell\Documents\MyFile.txt

结果是“C:\ Users \ Andrew”,非常意外,因为在换行之前数据没有被消耗,并且下一个std :: string读取将被自动消耗并用“Finnell \ Documnts \ MyFile”填充。 TXT“

std::getline(std::cin, file); 

这将消耗所有文本,直到换行符。

答案 1 :(得分:1)

您忘记包含<string>,这是定义该功能的地方。请记住,每种类型都将自己的operator>>定义为通过流进行操作的静态函数。对于将来可能创建的所有类型,无法写入输入流,因此可以通过这种方式进行扩展。