运行C++;涉及struct-tm的程序 我用Visual Studio 2012编写了一个C++的杂货库存程序。 一切顺利,正如预期的那样。文件作为命令行参数读入,用于用对象填充deque。我用来检查杂货店对象是否即将过期的函数使用了time\t和struct tm。尝试在Unix上运行程序时,我遇到一个涉及fstream的错误
以下是我得到错误的代码行:运行C++;涉及struct-tm的程序 我用Visual Studio 2012编写了一个C++的杂货库存程序。 一切顺利,正如预期的那样。文件作为命令行参数读入,用于用对象填充deque。我用来检查杂货店对象是否即将过期的函数使用了time\t和struct tm。尝试在Unix上运行程序时,我遇到一个涉及fstream的错误,c++,unix,visual-studio-2012,fstream,C++,Unix,Visual Studio 2012,Fstream,以下是我得到错误的代码行: int main (int argc, char** argv) { deque<Grocery> groceries; deque<Grocery>::iterator iter; string filename = ""; if (argc > 1) { filename = argv[1]; fstream fileData; fileDat
int main (int argc, char** argv) {
deque<Grocery> groceries;
deque<Grocery>::iterator iter;
string filename = "";
if (argc > 1) {
filename = argv[1];
fstream fileData;
fileData.open(filename, ios::in | ios::out); //**error**
//error check
if (!fileData) {
cout << "Error openeing file. Program aborting.\n";
return 1;
}
string name;
string expDate;
string type;
string quantity;
while (!fileData.eof()) {
Grocery temp;
getline (fileData,name,'\t');
temp.setName(name);
getline (fileData,expDate,'\t');
temp.setExpDate(expDate);
getline (fileData,type,'\t');
temp.setType(type);
getline (fileData, quantity,'\n');
temp.setQuantity(atoi (quantity.c_str()));
groceries.push_back(temp);
}
fileData.close();
}
return 0;
}
int main(int argc,char**argv){
德克杂货店;
迭代器iter;
字符串filename=“”;
如果(argc>1){
filename=argv[1];
fstream文件数据;
fileData.open(文件名,ios::in | ios::out);//**错误**
//错误检查
如果(!fileData){
我想你需要一个整洁的身材。
由于您在头文件中有声明,并且您可能已经将expDate从tm类型更改为tm*我认为您需要一个干净的构建。
Inventory.cpp:24:45: error: no matching function for call to âstd::basic_fstream<char>::open(std::string&, std::_Ios_Openmode)â
fileData.open(filename, ios::in | ios::out);
由于您在头文件中有声明,并且您可能已经将expDate从tm类型更改为tm*我认为您需要一个干净的构建。
Inventory.cpp:24:45: error: no matching function for call to âstd::basic_fstream<char>::open(std::string&, std::_Ios_Openmode)â
fileData.open(filename, ios::in | ios::out);
由于您在头文件中有声明,并且您可能已经将expDate从tm类型更改为tm*我认为您需要一个干净的构建。
Inventory.cpp:24:45: error: no matching function for call to âstd::basic_fstream<char>::open(std::string&, std::_Ios_Openmode)â
fileData.open(filename, ios::in | ios::out);
由于您在头文件中有声明,并且您可能已经将expDate从tm类型更改为tm*Inventory.cpp:24:45:错误:没有匹配的函数用于调用–std::basic\u fstream::open(std::string&,std:_Ios\u Openmode)–
Inventory.cpp:24:45: error: no matching function for call to âstd::basic_fstream<char>::open(std::string&, std::_Ios_Openmode)â
fileData.open(filename, ios::in | ios::out);
fileData.open(文件名,ios::in | ios::out);
构造函数仅在C++11模式下可用
您正在C++98模式下编译代码。编译时将-std=gnu++11
传递给g++
。Inventory.cpp:24:45:错误:调用–std::basic_fstream::open(std::string&,std:_Ios\u Openmode)时没有匹配的函数
fileData.open(文件名,ios::in | ios::out);
构造函数仅在C++11模式下可用
您正在C++98模式下编译代码。编译时将-std=gnu++11
传递给g++
。Inventory.cpp:24:45:错误:调用–std::basic_fstream::open(std::string&,std:_Ios\u Openmode)时没有匹配的函数
fileData.open(文件名,ios::in | ios::out);
构造函数仅在C++11模式下可用
您正在C++98模式下编译代码。编译时将-std=gnu++11
传递给g++
。Inventory.cpp:24:45:错误:调用–std::basic_fstream::open(std::string&,std:_Ios\u Openmode)时没有匹配的函数
fileData.open(文件名,ios::in | ios::out);
构造函数仅在C++11模式下可用
您正在C++98模式下编译代码。编译时将-std=gnu++11
传递到g++
。什么是expDate
的数据类型对不起。下面是在我的.h文件中初始化的变量:time\t;struct tm*expDate;Wait.expDate
是struct tm*
?,因为caltime()
返回指向内部对象的指针,该对象在许多不同条件下都会被覆盖,包括对localtime()的另一个调用
。也就是说,你不能仅仅保存那个指针并期望它永远有效。如果expDate
确实是struct tm*expDate;
,那么这一行不会编译失败,假设你已经包含了
。所以要么它不是这样声明的,要么它不是错误所在的行。发布完整的代码。代码Oks OK。发布一个完整的例子来重现这个问题。expDate
的数据类型是什么?很抱歉。下面是在我的杂货店.h文件中初始化的变量:time\t;struct tm*expDate;Wait。expDate
是一个struct tm*
?,因为localtime()
返回指向内部对象的指针,该对象在许多不同条件下都会被覆盖,包括对localtime()的另一个调用
。也就是说,你不能仅仅保存那个指针并期望它永远有效。如果expDate
确实是struct tm*expDate;
,那么这一行不会编译失败,假设你已经包含了
。所以要么它不是这样声明的,要么它不是错误所在的行。发布完整的代码。代码Oks OK。发布一个完整的例子来重现这个问题。expDate
的数据类型是什么?很抱歉。下面是在我的杂货店.h文件中初始化的变量:time\t;struct tm*expDate;Wait。expDate
是一个struct tm*
?,因为localtime()
返回指向内部对象的指针,该对象在许多不同条件下都会被覆盖,包括对localtime()的另一个调用
。也就是说,你不能仅仅保存那个指针并期望它永远有效。如果expDate
确实是struct tm*expDate;
,那么这一行不会编译失败,假设你已经包含了
。所以要么它不是这样声明的,要么它不是错误所在的行。发布完整的代码。代码Oks OK。发布一个完整的例子来重现这个问题。expDate
的数据类型是什么?很抱歉。下面是在我的杂货店.h文件中初始化的变量:time\t;struct tm*expDate;Wait。expDate
是一个struct tm*
?,因为localtime()
返回指向内部对象的指针,该对象在许多不同条件下都会被覆盖,包括对localtime()的另一个调用
。也就是说,你不能只保存那个指针,然后期望它永远有效。如果expDate
确实是struct tm*expDate;
,那么这一行不会编译失败,假设你已经包含了
。因此,要么它不是这样声明的,要么它不是这样的行