0

我有这样的文本文件:

7
a

bkjb
c


dea

hash_table是一个数组,line no.-2=index of hash_table array每行对应于数组中的一个元素。元素可能是空行或字符"a\n",在文本文件中会像这样:

a
//empty line

第一个数字用于决定数组的大小hash_table。<< 运算符不将空行或 '\n' 字符视为字符串,因此不添加到数组中。我试过这个但没有用。是我的尝试:

ifstream codes ("d:\\test3.txt"); //my text file

void create_table(int size, string hash_table[]) //creating array
{   string a;
    for(int i=0;i<size;i=i+1)
        {
        codes>>a;
        char c=codes.get();

        if(codes.peek()=='\n')
            {char b=codes.peek();
            a=a+string(1,b);
            }
        hash_table[i]=a;
        a.clear();
        }
}

void print(int size, string hash_table[])
{
    for(int i=0;i<size;i=i+1)
        {if(!hash_table[i].empty())
            {cout<<"hash_table["<<i<<"]="<<hash_table[i]<<endl;} 
        }
}

int main()
{
    int size;
    codes>>size;
    string hash_table[size];
    create_table(size, hash_table);
    print(size, hash_table);



}

注意:可以有任何没有。具有随机序列的空行。

4

1 回答 1

2

使用std::getline()而不是std::ifstream::operator >>(). 运算符将>>跳过空格,包括换行符。

std::string line;
while (std::getline(codes, line)) {
    //...do something with line
}
于 2013-10-28T16:44:55.160 回答