c++ - Eclipse C++ 字符串作为函数参数
问题描述
我遇到了一个错误函数的问题,它的目的是检查一个变量,在某些情况下告诉我变量的名称和它的值。
我想为函数提供值和名称(作为字符串),但我在以某种方式声明字符串时遇到问题(Eclipse MinGW C++)。
如果有人能指出我的错误或向我展示一种解决方法,那就太好了!
这是代码:
#include <string>
#include <iostream>
using namespace std;
int *ierr;
std::string(varname); //problem here, doesnt recognize the string
void error(double varvalue, std::string varname)
{
if (varvalue == 0 ) {
*ierr = 11;
cout << "Error: " << varname << " has an invalid value (equal 0)";
cout << "Error number " << *ierr << endl;
return;
}
if (varvalue < 0 ) {
*ierr = 10;
cout << "Error: " << varname << " has an invalid value (" << varvalue << " , smaller 0)";
cout << "Error number: " << *ierr << endl;
return;
}
}
int main() {
int Par = 0;
error(Par,"Par"); //test variable
}
解决方案
您没有正确定义字符串值。语法不正确。更严重的是,您声明了一个未初始化的指针*ierr
,它会在运行时导致段错误。
我遇到了一个错误函数的问题,它的目的是检查一个变量,在某些情况下告诉我变量的名称和它的值。
下面的代码将为您做到这一点,但了解何时使用指针很重要。
此外,您可能应该阅读一些关于字符串的内容,并熟悉字符串定义、复制、初始化等的样子。
#include <string>
#include <iostream>
using namespace std;
void error(double varvalue, std::string varname)
{
if (varvalue == 0 ) { //if varvalue is equal to 0
cout << "Error: " << varname << " has an invalid value (equal 0)";
cout << "Error number " << varvalue << endl;
return;
}
if (varvalue < 0 ) { //if varvalue is less than 0
cout << "Error: " << varname << " has an invalid value (" << varvalue << " , smaller 0)";
cout << "Error number: " << varvalue << endl;
return;
}
if (varvalue > 0) { //if varvlue is greater than 0
cout<<varname<<" has value: "<<varvalue<<endl;
}
}
int main() {
int Par = 10; // Set initial Par value to 10
error(Par,"Par"); //test variable
}
推荐阅读
- python-3.x - 如何按它们所在的多边形对点进行排序/标记?
- networking - 第一次匹配失败后,Dota2如何知道匹配高优先级的玩家?
- javascript - CSS - 删除左侧面板并始终保留标题与搜索,购物车链接
- javascript - Electron:将控制台输出复制到应用程序中
- apache-kafka - Kafka代理日志中这个错误的含义是什么?
- php - 如何在串联中使用innerJoinWith()
- wpf - Prism WPF中按名称解析接口的依赖关系
- amp-html - 如何在 localhost 中测试 amp-form 的工作情况
- c++ - 如何重新编码以启用 2 和 3?
- reactjs - 如何在本机反应中实现以下设计?