练习要求一个代码,该代码可以将数字0-9的用户输入分别转换为整数或字符串为字符串或整数,即如果输入0
"zero"
将输出反之亦然。
string number;
cout << "Let's convert strings to numbers."
<< "Enter value/string of 0-9";
while (number!= "exit")
{
cin >> number;
for (int i=0; i < digits.size(); i++)
{
if (number == digits[i]) cout << i << endl;
}
if (number == "0") cout << digits[0] << endl;
else if (number == "1") cout << digits[1] << endl;
else if (number == "2") cout << digits[2] << endl;
else if (number == "3") cout << digits[3] << endl;
else if (number == "4") cout << digits[4] << endl;
else if (number == "5") cout << digits[5] << endl;
else if (number == "6") cout << digits[6] << endl;
else if (number == "7") cout << digits[7] << endl;
else if (number == "8") cout << digits[8] << endl;
else if (number == "9") cout << digits[9] << endl;
}
digits是一个存储字符串"zero"
,"one"
等的矢量类。
这段代码运行正常,但是我不喜欢 if/else if
语句的长链,但是我无法找到将整数转换为字符串的方法。有人可以帮助我提高效率吗?谢谢!
答案 0 :(得分:3)
您可以使用if number == "0"
然后number[0] == '0'
char
。
e.i而不是if / else语句:
if (number[0] >= '0' && number[0] <= '9' )
std::cout << digits[number[0] - '0'] << std::endl;
else
std::cout << "wrong input - needs to be digit" << std::endl;
string
基本上是一个字符数组,std::string
是一个类型为char
的字符数组。
例如,这是在c或c ++中声明和初始化字符串的两种合法方法
char s[3] = { '0', '1', '\0' };
char s[3] = "01";
字符值在技术上是整数(或者说字节),它以某种编码(通常是ASCII)存储字符代码。 例如,'0'的字符代码 48 ,'1'的字符代码 49 ,'2' 50 。我们使用它,因为我们知道
'3' - '0' = 51 - 48 = 3
答案 1 :(得分:1)
您可以digits[number[0] - 48]
删除if / else if。
答案 2 :(得分:0)
只需使用isdigit检查它是否为0-9 http://www.cplusplus.com/reference/clibrary/cctype/isdigit/
如果是数字,你可以使用aoti http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/
将其转换为int最后只说
cout << digits[aoti(number)];