2012-05-01 88 views
1

我试图通过分离其位并把它们按顺序大小的字符串把一个整数转换成字符串3把一个整数转换成字符串

这是我的代码:

char pont[4]; 
void convertInteger(int number){ 
int temp100=0; 
int temp10=0; 
int ascii100=0; 
int ascii10=0; 
if (number>=100) { 
    temp100=number%100; 
    ascii100=temp100; 
    pont[0]=ascii100+48; 
    number-=temp100*100; 
    temp10=number%10; 
    ascii10=temp10; 
    pont[1]=ascii10+48; 
    number-=temp10*10; 
    pont[2]=number+48; 
} 
if (number>=10) { 
    pont[0]=48; 
    temp10=number%10; 
    ascii10=temp10; 
    pont[1]=ascii10+48; 
    number-=temp10*10; 
    pont[2]=number+48; 
} 
else{ 
    pont[0]=48; 
    pont[1]=48; 
    pont[2]=number+48; 
} 
} 

这里是一个什么样的假设发生的例子:

number = 356 

temp100 = 356%100 = 3 

ascii100 = 3 

pont[0]= ascii100 = 3 

temp100 = 3*100 = 300 

number = 365 - 300 = 56 

temp10 = 56%10 = 5 

ascii10 = 5 

pont[1]= ascii10 = 5 

temp10 = 5*10 = 50 

number = 56 - 50 = 6 

pont[2]=6 

我可能有错误的地方,并没有看到它(不知道为什么)... 这是假设是C++的方式。我可能就以C语言提前

+2

你是新来编程吗?您的方法存在一些缺陷,如果这是初学者练习,则可能不值得列举。 – Alan

回答

1

也许,你现在可以俯瞰错误混合这... 感谢:

pont[2]=number+48; 
} 
if (number>=10) { /* should be else if */ 
    pont[0]=48; 

不过,我想提出一个不同的方法;你不需要护理该值高于10010等,因为0仍然是一个有用的值 - 如果你不介意零填充你的答案。

请看下面的数字:

int hundreds = (number % 1000)/100; 
int tens = (number % 100)/10; 
int units = (number % 10); 
+1

提到'std :: stringstream'不会去amis我认为 –

+0

@MooingDuck:请这样做!我不知道C++有足够的细节来给予_good_ C++答案 - 尽管我喜欢认为我可以帮助初学者重新格式化他们的代码,以便于维护和阅读...... – sarnold

+1

要点是'stringstream ss; ss <<数字; string s = number.str();'一旦你使用它,它非常快速和容易。 – chris

1

所有内置类型懂得自己代表了std::ostream。它们可以被格式化为精密,转换成不同的表示等

这种统一处理使我们能够内置插件写到标准输出:

#include <iostream> 

int main() 
{ 
    std::cout << 356 << std::endl; // outputting an integer 
    return 0; 
} 

输出:

356 

我们可以流到不止cout。有一个叫std::ostringstream,我们可以用它就像cout标准类,但它给了我们哪些可以转换为字符串,而不是将一切标准输出对象:

#include <sstream> 
#include <iostream> 

int main() 
{ 
    std::ostringstream oss; 
    oss << 356; 

    std::string number = oss.str(); // convert the stream to a string 

    std::cout << "Length: " << number.size() << std::endl; 
    std::cout << number << std::endl; // outputting a string 
    return 0; 
} 

输出:

Length: 3 
356