(c++)试图记住在哪里定义函数
(C++) Trying to remember where to define functions
自从我触摸c++以来已经有一段时间了,但是我在main里面写了一个叫做"solution"的函数,现在那行给了我错误:"在'{'之前不允许有函数定义"
之后,我认为我应该在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];
我得到错误:"cannot convert ' std::basic_string ' to ' int ' initialization"
当我调用我的"solution"函数时:
outfile << solution(credit,
numofItems,
numofItemscopy,
items.size());
我得到"解决方案未在此范围内声明"的错误。
首先,在主函数中使用函数之前,需要对函数进行声明。如果愿意,可以在main函数之后定义。编译器从上到下,它只知道它在这一点上看到了什么。当你在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 "";
}
函数定义应该放在main()之前,如果你想让它们位于同一个源文件
相关文章:
- C++ 中的自定义异常:在哪里定义它们?
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 在C++中在哪里定义类常量?
- size_t在哪里定义
- 标准在哪里定义了可变变量可以改变
- 宏INT_MAX在哪里定义?
- 在哪里定义了预定义'user-defined'文本"m"的标准库?
- 在哪里定义常量促销
- Arduino中的串行函数在哪里定义
- Linux,OpenSSL:在哪里定义THIRTY_TWO_BIT
- 在哪里定义油漆以及为什么定义HDC
- 与前缀相关的整数解析在哪里定义?
- 不确定在哪里定义并声明我的结构.(获得未申报的标识符)
- Linux 中size_t在哪里定义 c++
- 提升的managed_external_buffer在哪里定义?
- 自上而下的编译..当变量相互使用时,在哪里定义变量
- 我在哪里定义代码来释放在C Python模块init函数中分配的资源
- types.h中的内容——编译器在哪里定义int、带符号int和其他值的宽度
- Poco ByteOrder::ToNetwork()在哪里定义
- 在哪里定义许多派生类使用的函子