小问题。使用我从文本文件转换的字符串:
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,然后是下一个,依此类推,继续到字符串的第二行。
谢谢您的帮助!