将整数放入字符串
Posted
技术标签:
【中文标题】将整数放入字符串【英文标题】:putting an integer into a string 【发布时间】:2012-05-01 23:17:43 【问题描述】:我试图通过分隔数字并将它们按顺序放入大小为 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 语言混为一谈... 提前致谢
【问题讨论】:
您是编程新手吗?您的方法存在许多缺陷,如果这是一个初学者练习,可能不值得一一列举。 【参考方案1】:可能是您现在忽略的错误:
pont[2]=number+48;
if (number>=10) /* should be else if */
pont[0]=48;
但是,我想提出一种不同的方法;您不关心该值高于100
、10
等,因为0
仍然是一个有用的值——如果您不介意将答案填零.
考虑以下数字:
int hundreds = (number % 1000) / 100;
int tens = (number % 100) / 10;
int units = (number % 10);
【讨论】:
我认为提及std::stringstream
不会错
@MooingDuck:请这样做!我对 C++ 的了解不够详细,无法给出好的 C++ 答案——尽管我喜欢认为我可以帮助初学者重新格式化他们的代码以便于维护和阅读......
要点是stringstream ss; ss << number; string s = number.str();
用过之后非常快捷方便。【参考方案2】:
所有内置类型都知道如何将自己表示为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
【讨论】:
以上是关于将整数放入字符串的主要内容,如果未能解决你的问题,请参考以下文章