ちょっとした質問です。以下を使用してテキストファイルから変換した文字列を使用します。
std::string content((std::istreambuf_iterator<char>(istr) ),
(std::istreambuf_iterator<char>() ) );
印刷すると、次のようになります。
@....@........@......@....................@....@...............@..........@..@......
@....@..@@@...@......@.......@@@..........@....@..@@@....@@@...@..........@..@......
@@@@@@.@...@..@......@......@...@.........@....@.@...@..@......@.......@@@@..@......
@....@.@@@@...@......@......@...@.........@....@.@...@..@......@......@...@..@......
@....@.@......@......@......@...@.........@.@@.@.@...@..@......@......@...@.........
@....@..@@@@...@@.....@@.....@@@...........@..@...@@@...@.......@@.....@@@@..@......
....................................................................................
それでも、ここでこのコードを使用すると:
for (int i = 0; i < (content.length()-6); i++){
std::string w = content.substr(i, 6);
std::cout << w << '\n';
}
必要に応じて多くの部分文字列を取得しましたが、期待どおりに見えません。私の意図は、次のようなものにすることです(最初の行の例として):
@....@
......
..@...
...@..
......
......
......
@....@
......
......
...@..
......
..@..@
......
代わりに、次の行に沿って取得します。
@....@
....@.
...@..
..@...
.@....
@.....
......
......
......
.....@
....@.
...@..
..@...
.@....
なぜこれができるのかわかりませんが、おそらく substr がしないことをしていると思いますか? 最初の行の最初の 6 文字を取得したいだけで、次の 6 文字、次の 6 文字というように、文字列の 2 行目に続きます。
助けてくれてありがとう!