Вернуться   Foxter.ru > Мой компьютер > Программирование

Ответ
 
Опции темы Опции просмотра
Старый 08.01.2007, 10:55   #37153  
Новичок
 
Аватар для aus_gift
 
Репутация: 1
Регистрация: 05.01.2007
Адрес: Украина
Сообщения: 6
Стрелка по поводу "cout"...

Пример из книги "Полный справочник по С++" 4-ое издание, Герберт Шилдт:


#include <iostream>
#include <cstring>
using namespace std;

class phonebook {
public:
char name[80];
int areacode;
int prefix;
int num;
phonebook(char *n, int a, int p, int nm)
{
strcpy(name, n);
areacode = a;
prefix = p;
num = nm;
}
};

// Display name and phone number.
ostream &operator<<(ostream &stream, phonebook o)
{
stream << o.name << " ";
stream << "(" << o.areacode << ") ";
stream << o.prefix << "-" << o.num << "\n";

return stream; // must return stream
}

int main()
{
phonebook a("Ted", 111, 555, 1234);
phonebook b("Alice", 312, 555, 5768);
phonebook c("Tom", 212, 555, 9991);

cout << a << b << c;

return 0;
}

.....
aus_gift вне форума   Ответить с цитированием
Старый 14.04.2007, 16:19   #46069  
Старожила
 
Аватар для Kostyan
 
Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277
Регистрация: 17.10.2005
Адрес: где то в степях Ярославщины
Сообщения: 399
По умолчанию

Может кто нить сможет разрешить маленький нюанс. Дело в следующем: апишная функция GetModuleFileName получает во втором параметре указатель на строковый буфер, в котором возвращает полное имя файла (полное, т.е. типа "C:\mydir\my_subdir\filename.exe"), которое собсна мне и не требуется. Мне необходимо из этой строки взять тольно непосредственно имя файла (filename.exe). Каким образом это можно было бы реализовать? Я сделал следующим образом, но как то криво мне кажецца. Отматывал указателем с конца строки до первого бекслеша и копировал дальше в буффер:

Код:
GetModuleFileName(NULL,&NameBuffer[0],MAX_PATH);
	DWORD StringLenght=lstrlen(&NameBuffer[0]);
	
	char* lpNameBuffer=&NameBuffer[StringLenght-1];
	do{
		--lpNameBuffer;
	}while(*lpNameBuffer!='\x5C');

	char* lpShortName=ShortName;
	do{
		++lpNameBuffer;
		*lpShortName = *lpNameBuffer;
		++lpShortName;
	}while(*lpNameBuffer!='\0');

	printf("ShortName: %s\n",&ShortName[0]);
Может есть другой способ?

ЗЫ функцию fnsplit() не предлагать =)
__________________
the signature is absent
Kostyan вне форума   Ответить с цитированием
Старый 20.10.2007, 16:44   #52207  
Новичок
 
Аватар для elkozlova
 
Репутация: 1
Регистрация: 20.10.2007
Сообщения: 6
По умолчанию

А чем тебе не нравится этот способ?
elkozlova вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей - 0 , гостей - 1)
 

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Powered by vBulletin
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
[Foxter Skin] developed by: Foxter.ru