C++ Cin没有操作数>&燃气轮机;
我不明白这为什么不起作用。出于某种原因,我得到了错误:C++ Cin没有操作数>&燃气轮机;,c++,iostream,cin,C++,Iostream,Cin,我不明白这为什么不起作用。出于某种原因,我得到了错误: 错误C2678:二进制'>>':未找到接受'std::istream'类型的左侧操作数的运算符(或没有可接受的转换) 我在VisualStudio2010 C++快车中做这件事,如果这样有帮助的话。不知道为什么它会给我这个错误,我已经用cin完成了其他程序 我的代码: #include <iostream> #include <iomanip> #include <fstream> using names
错误C2678:二进制'>>':未找到接受'std::istream'类型的左侧操作数的运算符(或没有可接受的转换)
我在VisualStudio2010 C++快车中做这件事,如果这样有帮助的话。不知道为什么它会给我这个错误,我已经用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;
}
}
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv){
字符串文件;
如果(argc>1)
{
file=argv[1];
}
其他的
{
cout>文件;
}
}
您忘了包含
,该函数就是在这里定义的。请记住,每个类型都将自己的操作符>>
定义为一个静态函数,用于通过流进行操作。输入流不可能写入到将来可能创建的所有类型的帐户中,因此它以这种方式扩展。包括
除此之外,我建议您使用getline,因为>>将在输入的第一个单词处停止
例如:
std::cin >> file; // User inputs C:\Users\Andrew Finnell\Documents\MyFile.txt
结果是“C:\Users\Andrew”,考虑到数据直到换行时才被使用,因此非常意外,下一次读取的std::string将被自动使用并填充为“Finnell\Documnts\MyFile.txt”
这将消耗所有文本直到换行。
#include
你所说的“>>与std::string的不兼容”是什么意思?@Benjamin:如果用户键入一个包含空格的文件名,那么operator>
@ildjarn:显然,事情不会像预期的那样进行。这正是操作符>>
指定要执行的操作。做指定的事情并不是我所说的“工作不好”。@Benjamin:当然;虽然Andrew的观点在上下文中是有效的,但我同意它的措辞不好。我的措辞可能更好,但std::cin>>文件只使用输入的第一个“字”并不明显或直观,特别是考虑到在用户创建换行之前不会处理std::cin>>文件。
std::getline(std::cin, file);