Консультация № 143734
12.09.2008, 14:09
0.00 руб.
0 3 1
В Паскале есть функция Eoln которая отвечает за проверку конца строки в файле
Существует ли аналог в С/С++?

Заранее спасибо

Обсуждение

давно
Академик
20764
1861
12.09.2008, 15:53
общий
Объясните пожалуйста конкретнее, что вам надо. Желательно без ссылок на другие платформы - здешние эксперты их могут и не знать (например, я на Паскале не пишу уже лет 20). Может тогда кто-нибудь и ответит.
давно
Старший Модератор
17042
808
12.09.2008, 16:19
общий
это ответ
Здравствуйте, Павленко А.А!
Хранение, а также ввод / вывод строк в C++ осуществляется различными способами: как массива символов (char string[] = "строка";), как объекта строкового класса string (string sMyString = "строка";), с помощью объектов классов, представленных лишь в определённых средах разработки / библиотеках (AnsiString - в C++ Builder, QString - в Qt).
Наиболее "традиционный" способ хранения строк - в виде массива символов, который заканчивается нулём ('\0'). Последний и является признаком конца строки, т.н. "строка, заканчивающаяся нулём" (null terminated string). В приложении 1 - программа-пример, показывающая как определить, на каком символе (по номеру) заканчивается строка.
Конец строки в классе string определён как npos, но удобнее для определения конца строки использовать функцию-член этого класса length(), которая возвращает длину строки.
В приложении 2 - программа-пример, показывающая как определить, на каком символе (по номеру) заканчивается строка, представленная объектом класса string.
P.S. Оба примера работают одинаково:


Приложение:
// Приложение 1
//----------------------------------------------------------
#include <iostream.h>
//----------------------------------------------------------
int main()
{
char string[] = "string"; // Наша строка
char cTmpChar;
int i = 0; // Счётчик символов
for( ; ; i++)
{
cTmpChar = string[i]; // Временной переменной присваиваем символ на позиции i
if(cTmpChar == '\0') break; // Если конец строки - выходим из цикла
else cout << i <<": " << cTmpChar << endl; // иначе выводим символ и его номер
}
cout << "String is ended at the symbol " << i << endl;
return 0;
}

// Приложение 2
//----------------------------------------------------------
#include <iostream>
#include <string>
using namespace std;
//----------------------------------------------------------
int main()
{
string String = "string"; // Наша строка
char cTmpChar;
int i = 0; // Счётчик символов
for( ; i < String.length(); i++) // Пока не достигнут конец строки
{
cTmpChar = String.at(i); // считываем символы на позиции i
cout << i <<": " << cTmpChar << endl; // и выводим их вместе с номером
}
cout << "String is ended at the symbol " << i << endl;
return 0;
}
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Старший Модератор
17042
808
12.09.2008, 16:26
общий
P.S. При использовании признаков конца строки, описанных выше, не имеет абсолютно никакого значения, считана эта строка из файла, введена с клавиатуры и т.п. Если строка содержит пробелы, то считывать её из файла лучше с помощью функции getline
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
Форма ответа