Ternick
@Ternick

Как получить первый элемент массива, если есть указатель на массив(wstring)?

Код

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

wstring* splitParamsFromPayload(wstring payload) {
	wstring arr[2] = { L"", L"" };
	if (payload.find(L" ") != wstring::npos) {
		wstringstream ws(payload);
		ws >> arr[0];
		ws.clear();
		arr[1] = payload.erase(0, arr[0].length() + 1);
		return arr;
	}
	else {
		arr[0] = payload;
		wcout << arr[0] << endl;
		return arr;
	}
}

int main() {
	wstring* arr = splitParamsFromPayload(L"test");
	wcout << (*arr)[0] << endl;
	_wsystem(L"pause");
	return 0;
}


Help :)
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
Если есть указатель на первый элемент массива строк wstring* arr, то *arr — первая строка в нём; (*arr)[0] — первый символ первой строки. Тут всё верно.

А программа не работает вот почему. Вернуть сырой массив из функции C++ невозможно никаким образом. (В данном случае, возвращается указатель на уже удалённый массив!) Решение: не использовать сырые массивы, а создавать, наполнять и возвращать vector<wstring>. В данном случае, подходит именно вектор, т.к. в строке может быть разное число слов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы