我想知道是什么导致了这个错误,我试图让它从外部文件导入数据并使用它。
#include <iostream>
#include <string>
#include <fstream>
#include <istream>
using namespace std;
int main()
{
int gardenn();
// Here you can ask your questions about dimensions and calculate cost
float lawncost(string item, float unitCost);
int main();
{
// Read your items and costs in a while loop
string item;
float unitCost;
ifstream catalog;
catalog.open("priceCatalog.txt");
while (catalog >> ("lawn") >> unitCost);
{
lawncost(item, unitCost);
}
cout << lawncost;
}
return 0;
}
当我运行它时,我收到此错误:
错误1错误C2679:二进制'&gt;&gt;' :找不到哪个操作符采用'const char [5]'类型的右手操作数(或者没有可接受的转换)c:\ users ** * < em> \ documents \ visual studio 2012 \ projects \ project10 \ project10 \ source.cpp 20 1 Project10 错误2错误C1903:无法从先前的错误中恢复;停止编译c:\ users * * \ documents \ visual studio 2012 \ projects \ project10 \ project10 \ source.cpp 20 1 Project10
答案 0 :(得分:3)
您拥有的不是有效的C ++代码。以下是我可以在其中看到的一些问题。
int gardenn();
这不是一个int,而是一个返回int且不接受任何参数的函数声明。 int main();
不确定你在这做什么。如果你声明一个int,那么你对第一个问题有同样的问题。如果你声明一个嵌套函数,那么C ++不支持它。 while (catalog >> ("lawn") >> unitCost);
你在while循环的末尾有一个分号,因此它下面的范围不是while循环的一部分。while (catalog >> ("lawn") >> unitCost);
不确定您使用catalog >> ("lawn")
做了什么,因为这不是有效的C ++代码。 ("lawn")
是const char*
,因此您无法写信给我。 float lawncost(string item, float unitCost);
你正在声明这个功能但从不给它一个身体。您需要为它提供一个主体,以便链接器可以链接到它,以便您的代码可以使用该功能。您还需要在main函数之外编写函数,因为C ++不支持嵌套函数。cout << lawncost;
lawncost
是一个函数,但您没有调用该函数,因此不会像您预期的那样打印返回值,而是将打印的是它的内存位置。答案 1 :(得分:1)
while (catalog >> ("lawn") >> unitCost);
{
lawncost(item, unitCost);
}
应该是:
std::string lawn;
while(catalog >> lawn >> unitCost) {
if(lawn == "lawn")
std::cout << lawncost(item, unitCost) << '\n';
}
注意我还从while谓词的末尾删除了;
。