如果需要根據正在使用的文件更改數組的大小,是否可以創建一個結構數組?非常數大小的結構數組
我創建一個結構數組,但即時填充從一個文件的結構。我需要根據文件中有多少行來製作數組的大小。
----好感謝,其方項目IM工作,在學校.----
如果需要根據正在使用的文件更改數組的大小,是否可以創建一個結構數組?非常數大小的結構數組
我創建一個結構數組,但即時填充從一個文件的結構。我需要根據文件中有多少行來製作數組的大小。
----好感謝,其方項目IM工作,在學校.----
因爲我們還沒有從學校裏瞭解到的標準庫,這裏有一個演示沒有使用矢量如何使用標準庫創建來自文本文件的行數組(std::vector
),以及如何處理故障。
該代碼並不意味着實用。 對於實際的代碼,我只需要在每次迭代中使用一個循環,並在矢量上使用getline
,然後使用push_back
。
希望這會給你一些在這方面的想法,以及顯示什麼需要什麼標題。 :)
#include <algorithm>
using std::copy;
#include <iostream>
using std::cout; using std::cerr; using std::istream;
#include <fstream>
using std::ifstream;
#include <stdexcept>
using std::exception; using std::runtime_error;
#include <stdlib.h> // EXIT_xxx
#include <string>
using std::string;
#include <vector>
using std::vector;
#include <iterator>
using std::back_inserter; using std::istream_iterator;
auto hopefully(bool const e) -> bool { return e; }
auto fail(string const& message) -> bool { throw runtime_error(message); }
class Line
{
private:
string chars_;
public:
operator string&() { return chars_; }
operator string const&() const { return chars_; }
//operator string&&() && { return chars_; }
friend
auto operator>>(istream& stream, Line& line)
-> istream&
{
getline(stream, line.chars_);
hopefully(stream.eof() or not stream.fail())
|| fail("Failed reading a line with getline()");
return stream;
}
};
void cppmain(char const filename[])
{
ifstream f(filename);
hopefully(not f.fail())
|| fail("Unable to open the specified file.");
// This is one way to create an array of lines from a text file:
vector<string> lines;
using In_it = istream_iterator<Line>;
copy(In_it(f), In_it(), back_inserter(lines));
for(string const& s : lines)
{
cout << s << "\n";
}
}
auto main(int n_args, char** args)
-> int
{
try
{
hopefully(n_args == 2)
|| fail("You must specify a (single) file name.");
cppmain(args[1]);
return EXIT_SUCCESS;
}
catch(exception const& x)
{
cerr << "!" << x.what() << "\n";
}
return EXIT_FAILURE;
}
匿名downvoter:如果你願意解釋你的downvote,它會幫助別人(要麼理解你的洞察力,要麼更容易忽略你)。就目前來看,這是一個年輕孩子的交流。如何讓它更成熟,說? –
使用'std :: vector'。 – DeiDei
矢量,維克多。 – nicomp
*並沒有在學校使用矢量* - 這是如何在學校教C++的悲哀形式。 – PaulMcKenzie