【发布时间】:2016-04-29 01:16:57
【问题描述】:
我尝试在 Linux Mint Cinnamon VM 中编译以下程序并遇到许多错误,但它在 Windows 上运行良好。我使用的命令是 gcc Main.cpp -o Main
#include "Main.h"
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int Main::count = 0;
string festival = "";
std::vector<string> v;
Main::Main()
{
}
Main::~Main()
{
}
int main() {
Main main;
cout << "Please enter the festival name.";
getline(cin, festival);
main.nameFile();
main.readFile();
system("PAUSE");
return 0;
}
void Main::nameFile() {
ifstream inFile;
inFile.open("names.txt");
if (inFile.fail()) {
cerr << "Error Opening \"names.txt\"" << endl;
exit(1);
}
string line;
while (getline(inFile, line)) {
v.push_back(line);
ofstream outFile(line + ".txt");
}
}
void Main::readFile()
{
while (v.size() != 0) {
string name;
name = v.at(v.size() - 1);
v.pop_back();
std::ofstream out(name + ".txt");
ifstream file;
file.open("letter.txt");
string line, nameHolder = "@name@", festivalHolder = "@festival@";
while (std::getline(file, line))
{
std::size_t n_i = line.find(nameHolder);
if (n_i != std::string::npos)
line.replace(n_i, nameHolder.size(), name);
std::size_t f_i = line.find(festivalHolder);
if (f_i != std::string::npos)
line.replace(f_i, festivalHolder.size(), festival);
out << line << '\n';
}
}
}
#pragma once
class Main
{
private:
static int count;
//static string festival;
public:
Main();
~Main();
void readFile();
void nameFile();
};
这是我在 Linux 上遇到的错误:
Main.cpp:在函数“int main()”中:
Main.cpp:30:16:错误:“系统”未在此范围内声明 系统(“暂停”);Main.cpp:在成员函数'void Main::nameFile()'中:
Main.cpp:39:11:错误:未在此范围内声明“退出” 退出(1);Main.cpp:44:33:错误:没有匹配函数调用‘std::basic_ofstream::basic_ofstream(std::basic_string)’
ofstream outFile(line + ".txt");Main.cpp:44:33:注意:候选人是:
在 Main.cpp:2:0 包含的文件中: /usr/include/c++/4.8/fstream:640:7: 注意:std::basic_ofstream<_chart _ traits>::basic_ofstream(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits; std::ios_base::openmode = std::_Ios_Openmode] basic_ofstream(const char* __s,/usr/include/c++/4.8/fstream:640:7: 注意:没有已知的参数 1 从‘std::basic_string’到‘const char*’的转换 /usr/include/c++/4.8/fstream:625:7: 注意:std::basic_ofstream<_chart _ traits>::basic_ofstream() [with _CharT = char; _Traits = std::char_traits] basic_ofstream(): __ostream_type(), _M_filebuf()
/usr/include/c++/4.8/fstream:625:7:注意:候选人需要 0 个参数,提供 1 个
/usr/include/c++/4.8/fstream:599:11:注意:std::basic_ofstream::basic_ofstream(const std::basic_ofstream&) 类 basic_ofstream : public basic_ostream<_chart>/usr/include/c++/4.8/fstream:599:11: 注意:没有已知的参数 1 从‘std::basic_string’到‘const std::basic_ofstream&’的转换
Main.cpp:在成员函数'void Main::readFile()'中:Main.cpp:56:34: 错误:没有匹配函数调用‘std::basic_ofstream::basic_ofstream(std::basic_string)’ std::ofstream out(name + ".txt");
Main.cpp:56:34:注意:候选人是:
在 Main.cpp:2:0 包含的文件中: /usr/include/c++/4.8/fstream:640:7: 注意:std::basic_ofstream<_chart _traits>::basic_ofstream(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits; std::ios_base::openmode = std::_Ios_Openmode] basic_ofstream(const char* __s,/usr/include/c++/4.8/fstream:640:7: 注意:没有已知的参数 1 从‘std::basic_string’到‘const char*’的转换
/usr/include/c++/4.8/fstream:625:7: 注意:std::basic_ofstream<_chart _traits>::basic_ofstream() [with _CharT = char; _Traits = std::char_traits] basic_ofstream(): __ostream_type(), _M_filebuf()/usr/include/c++/4.8/fstream:625:7:注意:候选人需要 0 个参数,提供 1 个
/usr/include/c++/4.8/fstream:599:11:注意:std::basic_ofstream::basic_ofstream(const std::basic_ofstream&) 类 basic_ofstream : public basic_ostream<_chart>/usr/include/c++/4.8/fstream:599:11:注意:没有已知的参数 1 从‘std::basic_string’到‘const std::basic_ofstream&’的转换
这是我在 Windows 上编译 + 运行时得到的输出:
names.txt:
约翰·博纳
奥巴马
约翰·多伊
吉姆鞋
比尔丁
letter.txt:
简·多伊
213-A 室
普通老建筑
信息技术学院
编程州立大学
纽约 NY 12345-0987
美国
收件人:@name@
主题:季节的问候:@festival@
亲爱的@name@,
给你和你的家人一个非常@festival@!
您的真诚,
简
【问题讨论】:
-
您认为提供您收到的错误是否合适,或者您是否认为任何愿意帮助您的人都应该自己发现错误?如果您寻求的帮助是让您的程序编译,那么提供您希望在运行时使用的 names.txt 和 letter.txt 是毫无用处的。
-
需要查看错误...
-
我认为,Linux 上没有
PAUSE命令。