#include <iostream>
#include <string>
using namespace std;
int main() {
string a;
getline(cin, a);
// Создаём массив с дополнительным местом для завершающего нуля (если это нужно)
char *n = new char[a.length() + 1];
int i = 0;
while (i < a.length() && a[i] != '.') {
n[i] = a[i];
i++;
}
// Добавляем завершающий нуль, если это массив C-строки
n[i] = '\0';
// Выводим результат для проверки (можно удалить в рабочей версии)
cout << n << endl;
// Освобождаем выделенную память
delete[] n;
return 0;
}
string a;
getline(cin, a);
char *n = new char[a.length() + 1];
char *p = n;
for (auto ch: a) {
if (ch == '.') { break; }
*p++ = ch;
}
*p = '\0';
cout << n;
#include <iostream>
#include <string>
const std::string test_str[] =
{
"имя.расширение",
"имя_без_расширения",
".скрытый_файл"
};
int main( int argc, char* argv[] )
{
std::cout << "Извлечение имени файла:" << std::endl;
std::string name;
for( auto s:test_str )
{
size_t idx = s.find('.');
// Если удалось найти символ '.'
if( idx != std::string::npos )
{
name.assign( s, 0, idx );
}
else
{
name.assign( s );
}
std::cout << "'" << s << "' => '" << name << "'" << std::endl;
}
return 0;
}
Результат работы: Извлечение имени:
'имя.расширение' => 'имя'
'имя_без_расширения' => 'имя_без_расширения'
'.скрытый_файл' => ''