atof 函数在程序中不起作用
atof Function not working in program
在我的 c++ 程序中,我需要创建一个名为 ComplexNumber 的类来保存复数的信息。我已经将所有函数都写在头文件中,并将函数移到了.cpp文件中。
我当前程序的 atof 函数不起作用。它显示一个错误,指出 atof 不在标准中。当我删除代码的 std:: 部分时,错误显示 atof 未在作用域中声明。
下面是两个示例错误消息:
复数.cpp:63:33:错误:未在此范围内声明"atof" o.realPart = atof(temp.c_str); ^ ComplexNumber.cpp:66:23:error: 'atof' 不是 'std' 的成员 o.imaginaryPart = std::atof(temp.c_str);
错误来自我的 ComplexNumber.cpp 文件,老实说,我对 c++ 的了解不足以确定如何解决此类问题。任何帮助将不胜感激。
主.cpp
/*
* File: main.cpp
* Author: Tyler Weaver
*
* Created on February 2, 2015, 4:08 PM
*/
#include <cstdlib>
using namespace std;
/*
*
*/
int main(int argc, char** argv)
{
return 0;
}
复数.h
/*
* File: ComplexNumber.h
* Author: Tyler Weaver
*
* Created on February 2, 2015, 4:10 PM
*/
#ifndef COMPLEXNUMBER_H
#define COMPLEXNUMBER_H
#include <cmath>
#include <ostream>
#include <istream>
#include <string>
class ComplexNumber {
public:
ComplexNumber(float real = 0, float imaginary = 0);
ComplexNumber operator+(ComplexNumber o);
ComplexNumber operator-(ComplexNumber o);
ComplexNumber operator*(ComplexNumber o);
ComplexNumber operator/(ComplexNumber o);
bool operator==(ComplexNumber o);
friend std::ostream& operator<<(std::ostream& out, ComplexNumber o);
friend std::istream& operator>>(std::istream& in, ComplexNumber o);
double getMagnitude();
private:
float realPart;
float imaginaryPart;
};
#endif /* COMPLEXNUMBER_H */
复数.cpp
/*
* File: ComplexNumber.cpp
* Author: Tyler Weaver
*
* Created on February 2, 2015, 4:10 PM
*/
#include "ComplexNumber.h"
ComplexNumber::ComplexNumber(float real, float imaginary)
{
realPart = real;
imaginaryPart = imaginary;
}
ComplexNumber ComplexNumber::operator+(ComplexNumber o)
{
return ComplexNumber(realPart + o.realPart,
imaginaryPart + o.imaginaryPart);
}
ComplexNumber ComplexNumber::operator-(ComplexNumber o)
{
return ComplexNumber(realPart - o.realPart,
imaginaryPart - o.imaginaryPart);
}
ComplexNumber ComplexNumber::operator*(ComplexNumber o)
{
return ComplexNumber(realPart * o.realPart -
imaginaryPart * o.imaginaryPart,
realPart * o.imaginaryPart + imaginaryPart * o.realPart);
}
ComplexNumber ComplexNumber::operator/(ComplexNumber o)
{
double divisor = o.realPart * o.realPart +
o.imaginaryPart * o.imaginaryPart;
return ComplexNumber((realPart * o.realPart +
imaginaryPart * o.imaginaryPart) / divisor,
(imaginaryPart * o.realPart - realPart * o.imaginaryPart) /
divisor);
}
bool ComplexNumber::operator==(ComplexNumber o)
{
return ((realPart == o.realPart) &&
(imaginaryPart = o.imaginaryPart));
}
std::ostream& operator<<(std::ostream& out, ComplexNumber o)
{
out << o.realPart << " + " << o.imaginaryPart << "in";
return out;
}
std::istream& operator>>(std::istream& in, ComplexNumber o)
{
std::string temp;
getline(in, temp, '+');
o.realPart = std::atof(temp.c_str);
getline(in, temp, 'i');
o.imaginaryPart = std::atof(temp.c_str);
return in;
}
double ComplexNumber::getMagnitude()
{
return sqrt(realPart * realPart +
imaginaryPart * imaginaryPart);
}
你忘了在 ComplexNumber.cpp 中#include <cstdlib>
,atof
函数在该标头中声明。
在C++中,源文件是彼此独立编译的,并且您要使用的所有函数都应在某处声明。 如果它们是在单独的头文件中声明的,则应在引用要调用的函数之前包含该文件。
您需要包含适当的标头:
#include <cstdlib>
把它放在ComplexNumber.cpp
顶部附近
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- sigwait() 在多线程程序中不起作用
- 为什么使用数组元素查找最大数字的程序不起作用?
- C++实用程序::转换在静态链接库中不起作用
- Cuda 基本程序 (将值写入矩阵和 std:cout 不起作用) ;主功能不启动
- 视窗 10 :笔(手写笔)在 MFC 应用程序上不起作用
- win32 滚动条在 C/C++ 程序中不起作用
- 用于拆分空格字符串的程序不起作用
- 反转一个数字程序不起作用,为什么?
- C++ 程序在代码块 IDE 中不起作用
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- 程序在CLion IDE中工作,但exe不起作用
- Opencv在2013年第5季度不起作用.应用程序总是在窗口中崩溃
- C++从句子中删除给定字符的程序不起作用
- C ++ GCC 内联程序集似乎不起作用
- 为什么当我选择>250000个采样点时,程序不起作用?
- 任务计划程序库的预处理不起作用 - 多定义错误
- C 为什么我的程序循环和"if-statements"不起作用?
- try() 和 catch() 不起作用;程序崩溃,从不执行 catch() 块
- Cin 执行不起作用 (程序.exe <文件与数据.txt)