Здравствуйте, есть код определяющий модель чипа видеокарты в данном случае моя карта - это NVIDIA Gefore GTX 970
как мне из модели чипа вытащить только производителя чипа. Было так NVIDIA Gefore GTX 970
должно получиться так NVIDIA
, ни один метод из интернета мне не помог.
Вот код:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <iomanip>
#include <regex>
using namespace std;
#include <comdef.h>
#include <Wbemidl.h>
#include <windows.h>
#define _WIN32_DCOM
# pragma comment(lib, "wbemuuid.lib")
int main(int argc, _TCHAR* argv[])
{
wcout.imbue(locale("rus_rus.866"));
DISPLAY_DEVICEW dd;
OSVERSIONINFOEXW osv;
osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW);
GetVersionExW((LPOSVERSIONINFO)&osv);
dd.cb = sizeof(DISPLAY_DEVICEW);
EnumDisplayDevicesW(NULL, 0, &dd, EDD_GET_DEVICE_INTERFACE_NAME);
wcout << L"video: " << dd.DeviceString << endl;
wcout << endl;
system("pause");
return 0;
}
Если вам не известно правило по которому можно вычленить имя производителя из названия видеокарты, то можно сделать так.
Напишем функтор для проверки есть ли в строке подстрока:
struct Contains{
std::string str;
explicit Contains(const std::string &str):
str(str)
{}
bool operator()(const std::string &substr) const{
return std::search(str.begin(), str.end(), substr.begin(), substr.end()) != str.end();
}
};
Теперь можно попробовать найти в заданной строке одно из известных нам названий:
std::string company(const std::string &name){
typedef std::vector<std::string> Companies;
typedef Companies::const_iterator Company;
static const Companies companies = {
"RADEON",
"NVIDIA",
"OTHER"
};
Company company = std::find_if(companies.begin(), companies.end(), Contains(name));
if(company == companies.end()){
return "unknown";
}
return *company;
}
Полный пример
Ну если предполагается, что первое слово в полном названии - это производитель чипа, то можно, например, так.
string Device = "NVIDIA Gefore GTX 970";
cout << Device.substr(0, Device.find(' '));
Можно попробовать один костыльный способ: просто вырезать все до первого пробела.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Прохожу задание в книге Алекса ЭллайнаПосле темы указателей и ссылок в одном из проверочных заданий, он просит написать написать программу...
Вы пытаетесь захватить info по значению, а так нельзя - это массивЗахватывайте по ссылке - &info
У меня есть массив данных (YPR) снятый с показаний гироскопа при его движении по определенной траектории (примерно по 100 значений на секунду)Я...