Reference: http://blog.csdn.net/candadition/article/details/7342380
Converting a string type to an int, float, double type is primarily done in the following ways:
# method One: Use StringStream
StringStream has been introduced in methods that convert int or float types to string types, and can also be used as a type of string to convert to a commonly used numeric type.
Demo:
#include <iostream>
#include <sstream> // This string needs to be introduced using stringstream
using namespace std;
// Template function: convert string type variables to commonly used numeric types (this method has universal applicability)
template <class Type>
Type stringToNum (const string & str)
{
istringstream iss (str);
Type num;
iss >> num;
return num;
}
int main (int argc, char * argv [])
{
string str ("00801");
cout << stringToNum <int> (str) << endl;
system ("pause");
return 0;
Input Results 801
#method two: Use the Atoi (), Atil (), atof () functions-----------------are actually conversions of char types to numeric types
Note : If string s is empty with Atoi, the return value is 0. It is not possible to determine if s is 0 or null
1. Atoi (): int atoi (const char * str);
Description: Parses the C string str interpreting its content as a integral number, which is returned as anintvalu E.
parameter: str : C string beginning with the representation of a integral number.
return value: 1. The successful conversion displays a value of type int. 2. the non-convertible string returns 0. 3. if the buffer overflows after the conversion, returnInt_maxorint_min
Demo:
#include <iostream> using namespace std; int main ()
{ int i; char szInput [256];
cout<<"Enter a number: "<<endl;
fgets ( szInput, 256, stdin );
i = atoi (szInput);
cout<<"The value entered is :"<<szInput<<endl;
cout<<" The number convert is:"<<i<<endl; return 0;
}
Output
Enter a number:48
The value entered is:48
The number convert is:48
2.aotl (): Long int atol (const char * str);
Description: C string str interpreting its content as an integral number, which is returned as along intvalue (usage and at Oi function similar, return value is long int)
3.atof (): Double atof (const char * str);
Parameters: C string beginning with the representation of a floating-point number.
return Value: 1. Conversion successfully returns a value of type Doublel 2. Cannot convert, return 0.0. 3. Cross-border, return tohuge_val
Demo:
/ * atof example: sine calculator * /
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main ()
{
double n, m;
double pi = 3.1415926535;
char szInput [256];
printf ("Enter degrees:");
gets (szInput);
// char type is converted to double type
n = atof (szInput);
m = sin (n * pi / 180);
printf ("The sine of% f degrees is% f \ n", n, m);
return 0;
}
C + + int type conversion String type
Reference: http://blog.csdn.net/candadition/article/details/7342092
In C + +, unlike C # or Java, you can directly use string addition to convert an int type to a string type. This type conversion in C + + requires some extra functions.
One, C + + int to string
#method one: Use the ITOA function: char * itoa (int value, char * str, int base);
description : Convert integer to String (non-standard function)
Parameters:
Value:value to being converted to a string. Str:array in memory where to store the resulting null-terminated string. Base:numerical base used to represent the value as a string, between2and, wheremeans decimal base,hexadecimal,8octal, and2binary.
Demo:
#include <iostream>
using namespace std;
int main (int argc, char * argv [])
{
int n = 30;
char c [10];
// Binary conversion
itoa (n, c, 2);
cout << "2->" << c << endl;
// decimal conversion
itoa (n, c, 10);
cout << "10->" << c << endl;
// Hex conversion
itoa (n, c, 16);
cout << "16->" << c << endl;
system ("pause");
return 0;
}
Output:
2-> 11110
10-> 30
16-> 1e
#method two: Use Sprintf:int sprintf (char * str, const char * format, ...);
Parameter description:
% The percent symbol is printed without conversion.
b Integer converted to binary.
c Integer is converted to the corresponding ASCII character.
d Integer converted to decimal.
F times precision converted to floating point.
o Integers are converted to octal.
s Integer into string.
x integers are converted to lowercase hexadecimal.
X integers are converted to uppercase hexadecimal.
Demo:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
int n = 30;
char c [20]; // char * c;
//% d decimal
sprintf (c, "% d", n);
cout << c << endl;
//% o octal
sprintf (c, "% o", n);
cout << c << endl;
//% X uppercase hexadecimal
sprintf (c, "% X", n);
cout << c << endl;
//% cACSII characters
sprintf (c, "% c", n);
cout << c << endl;
//% f floating point conversion
float f = 24.678;
sprintf (c, "% f", f);
cout << c << endl;
//%.2f "keep two decimal places
sprintf (c, "% .2f", f);
cout << c << endl;
// Convert two numbers
sprintf (c, "% d-%. 2f", n, f);
cout << c << endl;
system ("pause");
return 0;
}
Output:
30
36
1E
Note: Here is a special symbol
24.677999
24.68
30-24.68 #method three: Using StringStream
Input/output string Stream class:
StringStreamprovides an interface to manipulate strings as if they were input/output streams.
#include <iostream>
#include <string>
#include <sstream> // Introduce the stringstream header file
using namespace std;
int main ()
{
stringstream strStream;
int a = 100;
float f = 23.5566;
// int and float types can be stuffed into stringstream
strStream << a << "----" << f;
string s = strStream.str ();
cout << s << endl;
system ("pause");
return 0;
}
Output:
----23.5566
#fourth, other
1.SPRINTF can cause buffer overflow, consider using snprintf or nonstandard asprintf
2. If it is an MFC program, you can use Cstring::format
3. If you use boost, you can use it directly: string s = Boost::lexical_cast <string> (a);
4.atoi is also non-portable.
[C + +] string and int, float, double convert each other