2011-04-12 60 views
0

在C++中,我可以从包含整数的文件读取数据并将其存储在char数组[]中?C++中的字符数组

+0

是的,你可以。你更好地解释你想要的输入和输出? – 2011-04-12 01:20:47

+0

同意 - 具体来说,是否需要格式化或未格式化的I/O。 – ildjarn 2011-04-12 01:21:22

+0

内部是否意味着整数以ASCII格式存储? – sasi 2011-04-12 01:23:30

回答

0

是的。只要你的整数足够小,可以表示为一个字节。否则,它们的高位字节可能会丢失。

3

是的,这可以从一个文件中存储的数字在char阵列:

#include <fstream> 
#include <iterator> 
#include <algorithm> 

int main(int argc, char* argv[]) 
{ 
    std::ifstream in("input.txt"); 
    char arr[100]; 
    char* end = std::copy(std::istream_iterator<int>(in), 
          std::istream_iterator<int>(), 
          arr); 
    return 0; 
} 

有两个问题在这里。一,你必须在编译时知道你的数组的大小。二,每个输入数字必须符合char。请注意,这是格式化的输入,因此有效范围不是0-255或甚至0-127。这是一个有效的字符,因此'0','2','a','C'等是每个字符的有效输入。

也许你想要的是将你的文件读入std::vector<std::string>

#include <fstream> 
#include <iterator> 
#include <algorithm> 
#include <vector> 
#include <string> 

int main(int argc, char* argv[]) 
{ 
    std::ifstream in("input.txt"); 
    std::vector<std::string> vec; 
    std::copy(std::istream_iterator<int>(in), 
       std::istream_iterator<int>(), 
       std::back_inserter(vec)); 
    std::transfrom(vec.begin(), vec.end(), 
        vec.begin(), 
        my_transform()); 
    return 0; 
} 

这里我们读到的数字为std::vector<std::string>。然后,我们通过my_transform仿函数来处理数字的每个字符串表示。您将仿函数定义为一个简单的结构,它定义了std::string operator()(const std::string&)。函数调用操作符需要一个数字,并希望返回数字的操作,但是您希望更改数字。

+0

更新后反映使用'std :: vector '而不是'char'数组,因为我认为这就是你真正想要的。 – wilhelmtell 2011-04-12 01:58:40