主题:c++小问题
zj2099qc [专家分:0] 发布于 2010-03-11 11:46:00
请问大家,如何实现讲一个整数转变为一个字符串,整数的位数并不知道!然后逆序输出!
回复列表 (共15个回复)
沙发
强强 [专家分:4740] 发布于 2010-03-11 12:54:00
gcvt
板凳
quhailiang1984 [专家分:1720] 发布于 2010-03-11 18:15:00
[code=c]
#include<stdio.h>
void itoa(long i,char *s)
{ if(i==0)
return;
*s=i%10+'0';
itoa(i/10,s-1);
}
int main()
{ long n;
char str[7]="";
scanf("%ld",&n);
itoa(n,str+5);
printf("%s",str);
}
[/code]
3 楼
cxxcomp [专家分:2370] 发布于 2010-03-11 18:42:00
[code=c]
/********************************************************************
created: 2010/03/11
created: 11:3:2010 18:30
filename: main.cpp
file path: ..\pfan_tst3
file base: main
file ext: cpp
author: adam
purpose: exercise
*********************************************************************/
#include <iostream>
#include <vector>
using namespace std;
class TIntToStr
{
friend istream& operator>> (istream&, TIntToStr&);
friend ostream& operator<< (ostream&, TIntToStr&);
public:
TIntToStr(unsigned long = 0);
~TIntToStr();
char* GetString(void) const;
private:
static const int maxbuffersize = 16;
unsigned long _number;
mutable vector<char> _buffer;
mutable char* _c_str;
void Convert(void) const;
};
inline TIntToStr::TIntToStr(unsigned long nValue)
: _number(nValue)
{
_c_str = new char [maxbuffersize];
Convert();
}
inline TIntToStr::~TIntToStr()
{
delete [] _c_str;
}
inline istream& operator>> (istream& is, TIntToStr& its)
{
cout << "please input a integer to conver..." << endl;
is >> its._number; // need verdict
its.Convert();
return is;
}
inline ostream& operator<< (ostream& os, TIntToStr& its)
{
os << "----------------------\n";
for (int ix = 0; ix < its._buffer.size(); ++ix)
os << its._buffer[ix] ;
os << endl;
return os;
}
inline void TIntToStr::Convert() const
{
unsigned long nTmp = _number;
unsigned long nQuot;
int nRes;
while (nTmp != 0)
{
nQuot = nTmp / 10;
nRes = nTmp % 10;
nTmp = nQuot;
char cc = (char)nRes + '0';
_buffer.push_back(cc);
}
}
inline char* TIntToStr::GetString() const
{
int nIndex = 0;
for (vector<char>::iterator iter = _buffer.begin(); iter != _buffer.end(); ++iter)
_c_str[nIndex++] = *iter;
_c_str[nIndex] = '\0';
return _c_str;
}
#include <stdlib.h>
int main(int, char **, char **)
{
TIntToStr tiTest;
cin >> tiTest;
cout << tiTest << endl;
char* pNumStr = tiTest.GetString();
printf(pNumStr);
puts("\n");
unsigned long nHuge = 1233456; //整数
TIntToStr tiTest2(nHuge);
printf(tiTest2.GetString()); //c-style string 麻烦喜欢c++的请注意此行,每看到这个形式,我激动的都出汗。c++power之一。
system("pause");
return EXIT_SUCCESS;
}
[/code]
4 楼
cxxcomp [专家分:2370] 发布于 2010-03-11 18:50:00
希望quhailiang1984同学不要再说我的代码是大材小用了。:)
quhailiang1984:很多种方式都可以完成一个过程,没有定式,但有规则。上述你写出的方式功能应该没有问题,但是,对于程序设计来说,我们追求的是弹性。希望能仔细揣摩下。代码附上。个人意见,仅供参考。听说你是学数学的,有时间可以聊数学了。我学计算机的,但喜欢数学。
5 楼
quhailiang1984 [专家分:1720] 发布于 2010-03-11 19:04:00
[quote]
希望quhailiang1984同学不要再说我的代码是大材小用了。:)
quhailiang1984:很多种方式都可以完成一个过程,没有定式,但有规则。上述你写出的方式功能应该没有问题,但是,对于程序设计来说,我们追求的是弹性。希望能仔细揣摩下。代码附上。个人意见,仅供参考。听说你是学数学的,有时间可以聊数学了。我学计算机的,但喜欢数学。[/quote]
不敢不敢,您是前辈,向你学习!我是学数学的,很喜欢编程,将来很可能从事计算机方面的工作,好多不懂的还要向你请教!
6 楼
zj2099qc [专家分:0] 发布于 2010-03-11 19:24:00
好长啊!可是我自学的c++才看到函数!类还没有看完啊!所以暂时看不懂高手的代码!不好意思!不过还是要谢谢你
7 楼
zj2099qc [专家分:0] 发布于 2010-03-11 19:25:00
谢谢! 拿去好好研究研究
8 楼
bbslxw520 [专家分:0] 发布于 2010-03-11 19:29:00
为什么我拿这个编译不成功呢?
9 楼
cxxcomp [专家分:2370] 发布于 2010-03-11 19:36:00
vs2003以上版本都没问题。gcc我没试。icl编译通过。
10 楼
cxxcomp [专家分:2370] 发布于 2010-03-11 19:38:00
[quote][quote]
希望quhailiang1984同学不要再说我的代码是大材小用了。:)
quhailiang1984:很多种方式都可以完成一个过程,没有定式,但有规则。上述你写出的方式功能应该没有问题,但是,对于程序设计来说,我们追求的是弹性。希望能仔细揣摩下。代码附上。个人意见,仅供参考。听说你是学数学的,有时间可以聊数学了。我学计算机的,但喜欢数学。[/quote]
不敢不敢,您是前辈,向你学习!我是学数学的,很喜欢编程,将来很可能从事计算机方面的工作,好多不懂的还要向你请教!
[/quote]
哪里来的前辈。别这么说了。雪光风剑又该BS我了。嘿嘿。都是同学而已。
我来回复