创建一个空向量并通过char读取char文件。 (C ++)

时间:2014-09-27 00:14:31

标签: c++

我需要创建一个空的向量,然后打开并按字符逐个读取文件,当它看到一个数字时,它会将该字符放回流中,并将相应公司的金额作为数字读取。然后,我需要使用名称和金额构建一个Company对象。

到目前为止我所拥有的......

int main(){

//Function
string readCompanyInfo(double money);

//Handles the file
ofstream company("companymoney.txt");

    std::vector<int> v;
    int sum (0);

    for (int i=1;i<=10;i++) v.push_back(i);

    while (!v.empty())          {sum += v.back(); v.pop_back();}


    std::cout << sum << '\n';

    return 0;

该功能,打开文件和空文件。我将如何阅读文件并获取我在指示中寻找的结果? 感谢您的帮助,我显然很陌生,如果我能看到正确的东西,我将来会有一些工作要做,谢谢你们。

1 个答案:

答案 0 :(得分:1)

除了将一个字符读入缓冲区之外,还有更优雅高效的方法。一般的经验法则是将一行文本读入字符串并使用std::istringstream来解析字符串。在块模式下读取文件最有效。

字符字符

如果您必须按字符操作并存储到vector,请在阅读前分配一个大矢量。这将减少std::vector调整大小的机会,这意味着分配更大的内存块并将原始值复制到新的矢量区域。

使用最少的指令将尽可能多的数据读入矢量。阅读back_inserterstd::vector

接下来,使用一个指针或索引,搜索向量中的数字 复制指针/索引。 如果可能,递减指针/索引,并验证它是否指向美元符号。

其中一个指针/指数是“向前看”。

块处理

最有效的方法是使用组或数据块。读取块,搜索块。

您没有说明输入文件中数据的组织方式。

如果数据由制表符或逗号分隔,请在Web和StackOverflow中搜索“c ++ read file逗号分隔”或“c ++ read file tab分隔”。

我假设你正在处理一个文本文件 大多数文本文件每行有一条记录。 在这种情况下,请将一段文本(一行)读入std::string变量 然后,您可以在变量中搜索“$”,并使用std::istringstream将值从文本表示转换为数字(double)。

修改1:

正则表达式

如果你喜欢正则表达式,你可以使用正则表达式搜索字符串或字符向量。