2015-07-21 90 views
-3

一个文本文件包含下一行“1 + 2 = 4”。我想制作一个程序,它将读取每个字符并将它们存储在一个数组中,然后将表示数字的char变量转换为int类型的变量,在数字和“=”之后的数字之间的符号上,输出“正确”或“Inccorect”。 首先,我期望包含1的char变量的char变量包含值为1的int变量,但它包含117.当我试图查看一个ASCII tabel时,1是49.有没有一种方法来存储数字直接进入一个int数组,写入数值,并将符号转换为char数组或其他方式来解决这个问题?如何更改一个变量是一个字符,并将一个数字表示为一个float或int?

+0

欢迎来到StackOverflow!你有尝试过什么吗?显示你写的一些代码。 :)如果你四处搜索“convert char to int” - 你可能会找到你的解决方案,并做一些工作。如果你的问题保持不变,你将继续获得降价。 – Roman

+0

是的,我们需要看看你自己制定了什么,我们可以帮助你。 – zoska

回答

2

使用某种iostream。例如:

#include <iostream> 
#include <sstream> 

using namespace std; 

int main() { 
    string input("1+2=4"); 
    stringstream ss(input); 

    int a, b, c; 
    char sign; 
    ss >> a >> sign >> b >> sign >> c; 

    cout << (a + b == c) << endl; 
    return 0; 
} 

使用流转换您的数字后,您可以将它们存储在任何需要的地方。

+0

是的,只有您有“号码符号号码”才有效。它不是通用的... – zoska

+0

如果你想要通用性,你可以使用这种技术构建一个递归下降解析器: –

0

您应该拆分字符串,然后使用库来解析数字。 例如,您可以使用:

string input_number_string = "42.42"; 
float number; 
sscanf(input_nuber_string, "%f", &number); 

还有更好的库。

+0

你在哪里拆分字符串? –

+0

@ThomasMatthews有很多方法可以做到这一点。不知道问题的背景使得在它们之间做出选择很困难,所以我将它从代码中删除了。 – Sorin

相关问题