'itoa':函数不带1个参数&'c':未声明的标识符
'itoa' : function does not take 1 arguments & 'c' : undeclared identifier
我已经试了两天让这段代码工作了。这只是一个又一个错误。
有人能指出我做错了什么吗?
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
int main()
{
int h = 0;
for(int a = 100; a<1000; a++)
for(int b = 100; b<1000; b++)
int c = a * b;
// Error: "c" is undefined
if ((c == reverse(c)) && (c > h))
h = c;
cout << "The answer is: " << h << endl;
}
int reverse (int x)
{
// Error: "'itoa' : function does not take 1 arguments"
string s = string(itoa(x));
reverse(s.begin(), s.end());
return (x);
}
使用std::to_string也会给我带来更多的错误。
当编译器在错误消息中向您解释某些内容时,您应该相信它。事实上,itoa
确实接受了多个参数,正如您在以下链接中看到的那样:
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/
编辑:哦,顺便说一句,这是可以使用标准C++风格的代码实现的(根据评论中的建议修复了一些代码):
int reverse(int x)
{
std::stringstream ss;
ss << x;
std::string s = ss.str();
std::reverse(s.begin(), s.end());
ss.clear();
ss.str(s.c_str());
ss >> x;
return x;
}
给。不确定这是最干净的解决方案,但它适用于我的编译器。
编辑:在这里了解如何只使用一个字符串流:如何清除字符串流?
我可以建议一个不同的解决方案吗?而不是执行int<->字符串转换你可以测试一个数字是否是一个回文,方法是:
bool is_palindrome(int number, int base = 10)
{
int rebmun = 0;
for (int temp = number; temp != 0; temp /= base) {
rebmun = (rebmun * base) + (temp % base);
}
return number == rebmun;
}
然后你的测试变成:
if (is_palindrome(c) && (c > h))
对于第一个问题,正确的缩进可能会让它变得清晰:
int h = 0;
for(int a = 100; a<1000; a++)
for(int b = 100; b<1000; b++)
int c = a * b;
if ((c == reverse(c)) && (c > h))
h = c;
带有一些额外的括号:
int h = 0;
for(int a = 100; a<1000; a++)
{
for(int b = 100; b<1000; b++)
{
int c = a * b;
if ((c == reverse(c)) && (c > h))
h = c;
}
}
对于itoa
问题,其签名为:
char * itoa ( int value, char * str, int base );
所以你不能只写itoa(x)
并期望它返回一个字符串。
然而,在C++中有更好的方法将int
转换为string
- 如果您有C++11,则有
std::to_string
- 否则,
std::stringstream
将完成该工作
像这样:
#include <sstream>
int reverse (int x)
{
std::stringstream ss;
ss << x;
string s(ss.str());
reverse(s.begin(), s.end());
return (x);
}
请注意,这不会返回反转的int
。
相关文章:
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- 我的函数调用 (C++) 中的未声明标识符
- 具有继承的未声明标识符(运算符 ostream)
- 无法确定 IDE 在 C++ 中说出未声明标识符的原因
- 错误 C2065:'lO':用于声明向量值的未声明标识符?
- 可变参数模板的未声明标识符
- 动态变量上的c++MACRO未声明标识符
- 指向对象的指针的未声明标识符向量
- 简单C++程序上的多个未声明标识符
- C++类"未声明标识符"
- 计算文本文件中的整数数(使用 fin>>x 的未声明标识符)
- 编译器错误 xcode 未声明标识符 C++
- 直接 X 11 纹理 FX 文件错误 X3004 未声明标识符"input"
- GCC 未声明标识符"_asm"
- ios_base类的C++未声明标识符
- 未声明标识符SQL_SS_TABLE
- 使用arrayfire的未声明标识符
- 未声明标识符和标识符未定义是什么意思?如何修复错误
- 在 MacOS 上使用 OpenMPI C++语法时未声明标识符'MPI'