gpt4 book ai didi

c++ - (C++) 试图记住在哪里定义函数

转载 作者:行者123 更新时间:2023-11-28 07:01:47 25 4
gpt4 key购买 nike

自从我接触 C++ 以来已经有一段时间了,但我在我的 main 中写了一个名为“解决方案”的函数,现在该行给我错误:“函数定义在 '{' 之前是不允许的"

后来我想我应该在我的 main() 之后写我的函数定义,但这导致了另一连串的错误。

此外,就我的代码而言,当我调用我的函数解决方案并将其传递到我的输出文件时,我收到“无效参数”错误。

我还在输入末尾的“预期的‘{’”的最后一个‘{’上得到了错误。

#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());

我收到“解决方案未在此范围内声明”的错误。

最佳答案

首先,您需要先声明您的函数,然后再在主函数中使用它。如果您愿意,您可以在主函数之后定义它。编译器从上到下,它只知道到那时它看到了什么。当你在 main 中调用它时,编译器还没有看到 solution 函数,所以它不知道该做什么。

string solution(int cred, vector<int> original, vector<int> copy, int size);

您的声明应如下所示。要声明一个函数,您只需使用它的 header 而不是使用 {} 为其提供函数体,您只需使用 ; 结束该行,如下所示。

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 "";
}

关于c++ - (C++) 试图记住在哪里定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22341684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com