C++中String变量类型转换

同学发给我一段C++代码,发现使用 cout 为变量赋值时,当输入的值不符合变量类型时,套入while循环会出现死循环。于是,水平有限的我打算使 cout 为string变量赋值,再转换为double变量。

//Simplified model
using namespace std;
double a = 0;
cin>>a;
while( a == 0 )
{
    //code
}

如上述代码,当用户输入的值不符合double变量时(例如字符串),while会无视判断语句进入死循环。

解决方案:使用string变量缓冲,再赋值到double变量。但我们C++进度实在太慢,还没学到怎么转换变量,自己查资料并折腾一段时间后,找到了两种方法。

C标准库

PrototypeDescription
double atof ( const char *nPtr )Converts the string nPtr to double.
将 string 变量转为 double 变量。
int atoi ( const char *nPtr)Converts the string nPtr to int.
将 string 变量转为 int 变量。
long atoll ( const char *nPtr )Converts the string nPtr to long int.
将 string 变量转为 long int 变量。

使用范例:

using namespace std;
string str;
cin>>str;
double a = atof( str.c_str() );

C++标准库

添加头文件,使用 stringstream 在各种数据类型之间进行转换。

#include <sstream>
double a = 0;
string str;
ss<<str; //可以是其他类型
ss>>a;

欢迎来到Yari的网站:yar2001 » C++中String变量类型转换