整数转字符串,字符串转整数

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。

题目比较简单,但是涉及到许多问题,例如非法输入,有正负号,是否为空字符串,且不是输入大数类型,可以用long long,8字节整型等等。主要:int a=a*10+(str[i]-‘0‘)

也可以直接使用c的库函数,atoi函数,如果不能转换则返回0.使用例子如下

string a="-1232 pighehe";

int num=atoi(a);

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 enum flag{
 5     valid=0,
 6     invalid=1
 7 };
 8 int judge=valid;
 9
10
11 long long paraInt(string str)
12 {
13     judge=valid;
14     bool Fuflag=false;
15     long long num=0;
16     int i=0;
17     if(str.size()==0)
18     {
19         judge=invalid;
20         return invalid;
21     }
22     if (str[0]==‘-‘)
23     {
24         i=1;
25         Fuflag=true;
26         if(str.size()==1)
27         {
28             judge=invalid;
29             return invalid;
30         }
31     }
32
33     for (i;i<str.size();++i)
34     {
35         int temp=str[i]-‘0‘;
36         if(temp>=0&&temp<=9)
37             num=num*10+temp;
38         else{
39             judge=invalid;
40             return invalid;
41         }
42     }
43     if(Fuflag)
44         a=-a;
45     return num;
46 }
47 int main()
48 {
49     string str;
50     while(cin>>str)
51     {
52         long long num=paraInt(str);
53         if(!judge)
54             cout<<num<<endl;
55         else
56         {
57             cout<<"invalid input"<<endl;
58         }
59         str.clear();
60     }
61     return 0;
62 }


题目:输入一个整数,把该整数转换成字符串并输出。例如输入整数345,则输出整数"345"。

类似的也有函数itoa,使用例子如下:

int num=12345;
char str[10];
itoa(num,str,10); //将num转换为字符串保存到str中

不使用itoa函数:将整数的每位转换为字符,然后再逆序保存。例如:

//整形转成字符串函数实现
//题目不难,重点考察面试者对问题考虑的全面程度
#include <iostream>
using namespace std;
void itoa_mf(int num,char str[])
{
    int sign = num;
    int i = 0;
    int j = 0;
    char temp[100];
    //如果是负数就去掉符号,将-1234转成1234
    if(sign < 0)
    {
        num = -num;
    }
    //转成字符串,1234转成"4321"
    do
    {
        temp[i] = num % 10 + ‘0‘;
        num /= 10;
        i++;
    }while(num > 0);
    //如果是负数的话,加个符号在末尾,如:"4321-"
    if(sign < 0)
    {
        temp[i++] = ‘-‘;
    }
    temp[i] = ‘\0‘;
    i--;
    //将temp数组中逆序输入到str数组中
    //将"4321-" ====> "-1234"
    while(i >= 0)
    {
        str[j] = temp[i];
        j++;
        i--;
    }
    //字符串结束标识
    str[j] = ‘\0‘;
}  

//测试用例
void main()
{
    int a = 0;
    char s[100];
    itoa_mf(a,s);
    cout << s << endl;  

}  
时间: 2024-08-05 14:34:19

整数转字符串,字符串转整数的相关文章

剑指offer之【把字符串转换成整数】

题目: 把字符串转换成整数 链接: https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&tqId=11202&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0

写脚本时整数比较与字符串的比较

写脚本时整数比较与字符串的比较: 整数比较-eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ "$a" -ne "$b" ]-gt 大于,如:if [ "$a" -gt "$b" ]-ge 大于等于,如:if [ "$a" -ge "$b" ]-lt 小于,如:if [ "$a" -lt &q

剑指offer 把字符串转化为整数

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 示例1 输入 +2147483647 1a33 输出 2147483647 0 思路:字符串转化为整数的方法num = num * 10 + str[i] - '0':特殊情况:1.输入字符串为NULL: 2.输入字符串只有+/-: 3.转化的数字大于最大值或小于

字符串分隔 -&gt;连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; ?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

?连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组:?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 输入例子: abc 123456789 输出例子: abc00000 12345678 90000000 import java.util.*; public class Main{     public static void main(String[] ar

程序员面试50题(4)—把字符串转换成整数[算法]

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的代码有很大区别,可以说这道题能够很好地反应出程序员的思维和编程习惯,因此已经被包括微软在内的多家公司用作面试题.建议读者在往下看之前自己先编写代码,再比较自己写的代码和下面的参考代码有哪些不同. 首先我们分析如何完成基本功能,即如何把表示整数的字符串正确地转换成整数.还是以"345

将字符串转化为整数

将字符串转化为整数要考虑到很多的情况,首先对于字符串是空指针的处理,字符串开始带有'+''-'的情况,字符串中有空格等不是数字的处理,对于这些情况的处理,主要运用的方法是定义一个全局变量,在字符串中出现一些特殊情况的时候,改变全局变量的方法,作为标示符,这样就可以达到预期的效果. int symbol = -1; int fun(const char *src) {long long num = 0; int flag = 1; int symbol = 1; while (src != NUL

字符串转换成整数

题目描述 输入一个由数字组成的字符串,把它转换成整数并输出.例如:输入字符串"123",输出整数123. 给定函数原型int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi. 分析与解法 基本思路为:从左至右扫描字符串,把之前得到的数乘以10,然后加上当前字符所表示的数字. 然而,我们需要考虑以下几个问题: 输入为空指针时 数字前面的正负号 非法的字符 整形溢出 前三个问题很容易解决,这里主要考虑整形溢出的问题.一般来说,当发生

C语言将一个字符串转换成整数

1.环境 ubuntu16.04 Eclipse C语言 2.问题 用C语言编写程序,将一个字符串转换成整数. 3.解决方法 程序代码:https://github.com/southeast02/JZOF/blob/master/chap01_page12_1.c

字符串转成整数

题目:把一个字符串转换成整数. 考虑的问题: 1.空指针: 2.包含非数字字符: 3.包含正负号: 4.最大正整数: 5.最小负整数: 6.溢出(还没考虑) 代码: 1 package com.yyq; 2 import java.util.regex.Matcher; 3 import java.util.regex.Pattern; 4 5 /** 6 * Created by Administrator on 2015/9/4. 7 */ 8 public class StringToIn

整数转化为字符串

整数转化为字符串的函数相信大家在做一些算法题的时候就已经做过,一般能想到的代码如下: 1 size_t my_uint32_to_str(uint32_t value, char *dst) 2 { 3 size_t length = digits10(value); 4 size_t len = length; 5 while(value) 6 { 7 dst[length - 1] = '0' + (value % 10); 8 length--; 9 value /= 10; 10 } 1