Привет всем!
столкнулся с ужасной проблемой, не знаю как решить:
void ParseFile(const char *pchFilePath)
{
std::fstream file(pchFilePath, std::fstream::in | std::fstream::binary);
if(!file)
throw ... ;
ParseStream(file);
}
void ParseStream(std::istream &file)
{
...
std::string str;
// int n = str.capacity();
while (std::getline(file, str)) {
....
}
}
такой вот код, должен читать обычный текстовый файл построчно.
В MSVC 6.0 этот код отлично работает, все без проблем.
Но в MSVC 7.0 функция getline читает только 15 симолов из строки!!!!!!, как оказалось 15 — это capacity строки!
Это что баг 7.0 или фича? Кто знает, как можно исправить положение?
Здравствуйте, Yuri, Вы писали:
Y>Привет всем!
Y>столкнулся с ужасной проблемой, не знаю как решить:
Y>Y> void ParseFile(const char *pchFilePath)
Y> {
Y> std::fstream file(pchFilePath, std::fstream::in | std::fstream::binary);
Y> if(!file)
Y> throw ... ;
Y> ParseStream(file);
Y> }
Y> void ParseStream(std::istream &file)
Y> {
Y> ...
Y> std::string str;
Y>// int n = str.capacity();
Y>
while (std::getline(file, str)) {
Y> ....
Y> }
Y> }
Y>
Y>такой вот код, должен читать обычный текстовый файл построчно. В MSVC 6.0 этот код отлично работает, все без проблем.
Y>Но в MSVC 7.0 функция getline читает только 15 симолов из строки!!!!!!, как оказалось 15 — это capacity строки!
Y>Это что баг 7.0 или фича? Кто знает, как можно исправить положение?
А void reserve(size_t n) не поможет?
[ posted via RSDN@Home 1.1.2 stable ]
Здравствуйте, Yuri, Вы писали:
Y>такой вот код, должен читать обычный текстовый файл построчно. В MSVC 6.0 этот код отлично работает, все без проблем.
Y>Но в MSVC 7.0 функция getline читает только 15 симолов из строки!!!!!!, как оказалось 15 — это capacity строки!
А как ты это узнал? Уж не дебугером ли посмотрел?
Если им то попробуй это строку куданибудь вывести.
Есть в дебугере маленькая бяка при отображении строк...
... << RSDN@Home 1.1.3 beta 1 >>
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Yuri, Вы писали:
Y>>такой вот код, должен читать обычный текстовый файл построчно. В MSVC 6.0 этот код отлично работает, все без проблем.
Y>>Но в MSVC 7.0 функция getline читает только 15 симолов из строки!!!!!!, как оказалось 15 — это capacity строки!
WH>А как ты это узнал? Уж не дебугером ли посмотрел? Если им то попробуй это строку куданибудь вывести.
WH>Есть в дебугере маленькая бяка при отображении строк...
Да, спасибо, я уже догадался (абсолютно случайно, спустя 2-х часов) но я ж и подумать не мог, что строки длина которых менее 15 символов отображается нормально, а иначе — фарш!!!