Николай Веселуха
Высший разум
(384352)
5 лет назад
#include <iostream>
#include <string>
#include <cstring>
#include <vector>
using namespace std;
int main() {
wcout.imbue(locale(".OCP"));
wcin.imbue(locale(".OCP"));
wstring wstr = L"Особенности национальной рыбалки - художественный, комедийный фильм.";
vector<wstring> box;
wchar_t* next = nullptr;
auto delim = L" .,!;:-\t\n";
auto token = wcstok_s(const_cast<wchar_t*>(wstr.c_str()), delim, &next);
while (token != nullptr) {
box.emplace_back(wstring(token));
token = wcstok_s(nullptr, delim, &next);
}
for (const auto& item : box) wcout << item << L'\n';
system("pause");
}
данил тушев
Гуру
(3907)
5 лет назад
Не люблю читать говнокод, это не только к твоему коду относиться, это не личное! Вообще, описал бы задачу, а как работает функция (принимает аргументы каких то типов и возвращает значение какого то типа). Блин раньше полендромы юзал, а сейчас даже не понимаю что за лексемы.
#include cstring
using std::endl;
int main()
{
setlocale(LC_ALL, "Russian");
char str[] = "Особенности национальной рыбалки - художественный, комедийный фильм.";
char* next_token = nullptr;
std::cout << "Разделение строки " << str << " на лексемы:" << endl;
char* pch = strtok_s(str, " ,.-", &next_token);
while (pch != nullptr)
{
std::cout << pch << endl;
pch = strtok_s(next_token, " ,.-", &next_token);
}
return 0;
}
Почему такой "pch = strtok_s(next_token, " ,.-", &next_token);" и такой "pch = strtok_s(nullptr, " ,.-", &next_token); " вариант 14-й строки работаю абсолютно одинаково?
И как вообще можно делить nullptr на слова? Это же ничто.
Стоит последняя VS community.
upd
Маил ру не пишет фразы внутри стрелочек, так что библиотеки iostream и cstring просто названы, в коде они оформлены как надо