我接触C ++已经有一段时间了,但是我正在写我的主要内容我有一个名为“解决方案”的函数,现在该行给了我错误:“在'{'之前不允许函数定义“
之后我认为我应该在main()之后编写我的函数定义,但这导致了另一个错误。
另外,正如我的代码所示,当我调用我的函数解决方案并将其传递给我的outfile时,我得到“无效参数”的错误。
我也在输入结尾的“预期'{'的最后'{'上得到错误。”
#include <iostream>
#include <fstream>
#include <vector>
#include <sstream>
using namespace std;
int main(int argc, char** argv) {
ifstream infile("TEST.txt", std::ifstream::in);
string line;
vector<string> inputLines;
if(infile.is_open()){
while(getline(infile, line)){
cout << line << '\n';
inputLines.push_back(line);
}
}
infile.close();
ofstream outfile("output.txt", std::ofstream::out);
for(unsigned int i = 1; i < inputLines.size(); i+= 3){
int credit = inputLines[i];
int numofItems = inputLines[i+1];
int numofItemscopy = inputLines[i+1];
vector<int> items;
stringstream ssin(inputLines[i+2]);
int x = 0;
while(ssin.good() && x < numofItems){
ssin >> items[x];
++x;
}
outfile << solution(credit,
numofItems,
numofItemscopy,
items.size());
outfile << inputLines[i] << '\n';
}
outfile.close();
return 0;
}
string solution(int cred, vector<int> original, vector<int> copy, int size){
for(int i = 0; i < size; i++ ){
for (int ii = 0; ii < size; ii++){
if(original[i] + copy[ii] == cred){
return std::string(i) + std::string(ii);
}
}
}
return "";
}
编辑:
我把我的解决方案功能放在我的主要之后,现在我收到以下错误:
在所有三行:
int credit = inputLines[i];
int numofItems = inputLines[i+1];
int numofItemscopy = inputLines[i+1];
我收到错误:“无法将'std :: basic_string'转换为'int'初始化”
当我打电话给我的“解决方案”功能时:
outfile << solution(credit,
numofItems,
numofItemscopy,
items.size());
我收到错误“未在此范围内声明解决方案。”
答案 0 :(得分:1)
首先,在主函数中使用之前,需要声明函数。然后,如果您愿意,可以在主函数之后定义它。编译器从上到下,它只知道它到目前为止所看到的内容。当你在main中调用它时,编译器还没有看到解决方案函数,因此它不知道该怎么做。
string solution(int cred, vector<int> original, vector<int> copy, int size);
您的声明应如下所示。要声明一个函数,你只需要使用它的标题,而不是给它一个{}
的正文,你只需用;
结束该行,如下所示。
int num = stoi("32");
至于将字符串解析为整数,在C ++ 11中,您可以简单地如上所示。请点击此处查看更多信息:https://stackoverflow.com/a/11354496/2749485
请参阅下文,了解您的代码现在应该如何显示:
#include <iostream>
#include <fstream>
#include <vector>
#include <sstream>
using namespace std;
string solution(int cred, vector<int> original, vector<int> copy, int size);
int main(int argc, char** argv) {
ifstream infile("TEST.txt", std::ifstream::in);
string line;
vector<string> inputLines;
if(infile.is_open()){
while(getline(infile, line)){
cout << line << '\n';
inputLines.push_back(line);
}
}
infile.close();
ofstream outfile("output.txt", std::ofstream::out);
for(unsigned int i = 1; i < inputLines.size(); i+= 3){
int credit = stoi(inputLines[i]);
int numofItems = stoi(inputLines[i+1]);
int numofItemscopy = stoi(inputLines[i+1]);
vector<int> items;
stringstream ssin(inputLines[i+2]);
int x = 0;
while(ssin.good() && x < numofItems){
ssin >> items[x];
++x;
}
outfile << solution(credit,
numofItems,
numofItemscopy,
items.size());
outfile << inputLines[i] << '\n';
}
outfile.close();
return 0;
}
string solution(int cred, vector<int> original, vector<int> copy, int size){
for(int i = 0; i < size; i++ ){
for (int ii = 0; ii < size; ii++){
if(original[i] + copy[ii] == cred){
return std::string(i) + std::string(ii);
}
}
}
return "";
}
答案 1 :(得分:0)
如果要将它们放在同一个源文件中,函数定义应该放在main()之前