В качестве упражнения я пытаюсь создать манипулятор потока ввода, который будет всасывать символы и помещать их в строку до тех пор, пока он не встретит определенный символ или не достигнет eof.Идея пришла со страницы 249.
Брюса Экеля "Мышление на С ++". Вот код, который у меня есть:
#include <string>
#include <iostream>
#include <istream>
#include <sstream>
#include <fstream>
#include <iomanip>
using namespace std;
class siu
{
char T;
string *S;
public:
siu (string *s, char t)
{
T = t;
S = s;
*S = "";
}
friend istream& operator>>(istream& is, siu& SIU)
{
char N;
bool done=false;
while (!done)
{
is >> N;
if ((N == SIU.T) || is.eof())
done = true;
else
SIU.S->append(&N);
}
return is;
}
};
и его проверка ....
{
istringstream iss("1 2 now is the time for all/");
int a,b;
string stuff, zork;
iss >> a >> b >> siu(&stuff,'/');
zork = stuff;
}
идея в том, что siu (& stuff, '/') будет высасывать символы из iss, пока не встретит /.Я могу смотреть его с помощью отладчика, так как он получает символы 'n' 'o' 'w' через '/' и завершает цикл.Кажется, все плывет, пока я не смотрю на вещи.У материала теперь есть символы и т. Д. НО между каждым из них есть по 6 дополнительных символов. Вот пример:
- и прочее 0x0012fba4 {0x008c1861 "nÌÌÌýoÌÌÌýwÌÌÌýiÌÌÌýsÌÌÌýtýýýý * 101 * * * * *
Что происходит?