Сначала убедитесь, что ваш входной файл в порядке:
Запустите следующую команду и сообщите нам результат:
#include <iostream>
#include <sstream>
#include <string>
#include <iterator>
#include <fstream>>
#include <iomanip>
#include <algorithm>
int main()
{
std::ifstream file("file.txt");
std::cout << std::hex;
std::copy(std::istreambuf_iterator<char>(file),
std::istreambuf_iterator<char>(),
std::ostream_iterator<int>(std::cout, " "));
}
Редактировать:
Выход был 31 32 33 34 35 20 0А
Попробуйте запустить этот код и посмотрите, что получится на выходе:
#include <iostream>
#include <sstream>
#include <string>
#include <iterator>
#include <fstream>>
#include <iomanip>
#include <algorithm>
int main()
{
std::ofstream file("file.txt");
file << "12345 \n";
}
Скопируйте вывод этого файла и сравните его с оригиналом.
Проблема в том, что разные платформы имеют разную последовательность завершения строки. Я просто хочу убедиться, что «0x0A» — это последовательность завершения строки для вашей платформы. Обратите внимание, что последовательность завершения строки преобразуется в '\n' при чтении файла в текстовом режиме, а когда вы выводите '\n' в файл в текстовом режиме, она преобразуется в последовательность завершения строки.
Редактировать 2
Итак, у меня есть файл: file.txt
> od -ta -tx1 file.txt
0000000 1 2 3 4 5 sp nl
31 32 33 34 35 20 0a
0000007
Таким образом, файл содержит 1 строку, оканчивающуюся на 0x0A
.
Используя эту программу:
#include <iostream>
#include <sstream>
#include <string>
#include <iterator>
#include <fstream>>
#include <iomanip>
#include <algorithm>
int main()
{
std::ifstream file("file.txt");
std::string line;
while(std::getline(file,line))
{
std::cout << "Line(" << line << ")\n";
}
}
Я получил:
> g++ t.cpp
> ./a.out
Line(12345 )
person
Martin York
schedule
16.01.2011
getline(std::istream&, std::string&)
, найденный в ‹string›, он принимает поток и std::string. - person Martin York   schedule 16.01.2011cat
, и новой строки не было. - person   schedule 16.01.20110A
... может ли это быть виновником? - person   schedule 16.01.201131 32 33 34 35 20 0A
- person   schedule 16.01.2011