#include <iostream>
#include <string>
int main()
{
double f = 23.43;
double f2 = 1e-9;
double f3 = 1e40;
double f4 = 1e-40;
double f5 = 123456789;
std::string f_str = std::to_string(f);
std::string f_str2 = std::to_string(f2); // 注意:返回 "0.000000"
std::string f_str3 = std::to_string(f3); // 注意:不返回 "1e+40".
std::string f_str4 = std::to_string(f4); // 注意:返回 "0.000000"
std::string f_str5 = std::to_string(f5);
std::cout << "std::cout: " << f << '\n'
<< "to_string: " << f_str << "\n\n"
<< "std::cout: " << f2 << '\n'
<< "to_string: " << f_str2 << "\n\n"
<< "std::cout: " << f3 << '\n'
<< "to_string: " << f_str3 << "\n\n"
<< "std::cout: " << f4 << '\n'
<< "to_string: " << f_str4 << "\n\n"
<< "std::cout: " << f5 << '\n'
<< "to_string: " << f_str5 << '\n';
}
#include <string>
#include <sstream>
using namespace std;
int StringToInt(string &str)
{
return atoi(str.c_str());
}
string IntToString(int &a)
{
stringstream ss;
ss<<a;
return ss.str();
}
void main()
{ // int 转 string
int a=100;
string str="123";
cout<<IntToString(a)<<endl;
// string转int
cout<<StringToInt(str)<<endl;
system("pause");
return 0;
}
string 转 CString
CString.format(”%s”, string.c_str());
char 转 CString
CString.format(”%s”, char*);
char 转 string
string s(char *);
string 转 char *
char *p = string.c_str();
CString 转 string
string s(CString.GetBuffer());
1,string -> CString
CString.format(”%s”, string.c_str());
用c_str()确实比data()要好.
2,char -> string
string s(char *);
只能初始化,在不是初始化的地方最好还是用assign().
3,CString -> string
string s(CString.GetBuffer());
GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
《C++标准函数库》中说的
有三个函数可以将字符串的内容转换为字符数组和Cstring
1.data(),返回没有”\0“的字符串数组
2,c_str(),返回有”\0“的字符串数组
3,copy()
—————————————————————
CString与int、char*、char[100]之间的转换- -
CString与int、char*、char[100]之间的转换- -
CString互转int
将字符转换为整数,可以使用atoi、_atoi64或atol。
而将数字转换为CString变量,可以使用CString的Format函数。如
CString s;
int i = 64;
s.Format(”%d”, i)
Format函数的功能很强,值得你研究一下。
void CStrDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString
ss=”1212.12″;
int temp=atoi(ss);
CString aa;
aa.Format(”%d”,temp);
AfxMessageBox(”var is ” + aa);
}
sart.Format(”%s”,buf);
CString互转char*
///char * TO cstring
CString strtest;
char * charpoint;
charpoint=”give string a value”;
strtest=charpoint;
///cstring TO char *
charpoint=strtest.GetBuffer(strtest.GetLength());
标准C里没有string,char *==char []==string
可以用CString.Format(”%s”,char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTR)CString就可以了。
CString转换 char[100]
char a[100];
CString str(”aaaaaa”);
strncpy(a,(LPCTSTR)str,sizeof(a));
1.string转int传统做法:
比如:string s = "123";
int a;
那么可以这样写:a = s[0] - '0'; 输出a就是1
a = s[1] - '0'; 输出a就是2
2.还有一种情况是要把整个string字符串转成一个数字(不一定要是int)
此时可以用到sstream头文件,这个头文件似乎非常强大,这里只是用到冰山一角...
具体写法如下:
int convert(string str) //字符串转整数
{
stringstream s; //这里需要include <sstream>
int res;
s << str;
s >> res;
return res;
}
int转string:
1.可以用sstream中定义的字符串流对象,写法和上述相似:
string itos(int i) //整数转字符串
{
stringstream s;
s << i;
return s.str();
}
3.也可直接用atoi()函数 (转成其它类型的也都有类似的函数)
string s = "123";
int a = atoi(s.c_str());
4.也可以用to_string函数,该函数有好多个重载
string s=to_string(123);